--- 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)
prop
fun
function(val) { . . . }
val
prop
.Метод __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}}