--- 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__ ---
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}

Сводка

Метод __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}}

Смотрите также