--- title: Object.prototype.__defineSetter__() slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ tags: - Deprecated - JavaScript - Method - Non-standard - Object - Prototype - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ ---
Метод __defineSetter__() привязывает свойство объекта к функции, вызываемой каждый раз при попытке установить значение этого свойства.
obj.__defineSetter__(prop, fun)
propfunfunction(val) { . . . }
valprop.Метод __defineSetter__() позволяет определять {{jsxref("Operators/set", "сеттер", "", 1)}} на уже существующем объекте.
// Нестандартный и устаревший способ
var o = {};
o.__defineSetter__('value', function(val) { this.anotherValue = val; });
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Способ, совместимый со стандартом
// Использование оператора set
var o = { set value(val) { this.anotherValue = val; } };
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Использование метода Object.defineProperty()
var o = {};
Object.defineProperty(o, 'value', {
set: function(val) {
this.anotherValue = val;
}
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
Не является частью какой-либо спецификации.
{{Compat}}