Object.prototype.__defineSetter__()

Ця функціональність не рекомендована до використання на користь синтаксису ініціалізації об'єктів або API Object.defineProperty().

Однак, оскільки вона широко використовується у Всесвітній мережі, дуже малоймовірно, що веб-переглядачі припинять її підтримку.

Метод __defineSetter__  прив'язує властивість об'єкта до функції, яка викликатиметься під час спроби присвоїти значення цієї властивості.

Синтаксис

obj.__defineSetter__(prop, fun)

Параметри

prop
Рядок, що містить ім'я властивості, яка буде прив'язана до наданої функції.
fun
Функція, що викликатиметься при спробі присвоїти значення вказаної властивості. Ця функція має форму
function(val) { . . . }
val
Псевдонім змінної, яка містить значення для присвоєння prop.

Значення, що повертається

Опис

Метод __defineSetter__ дозволяє визначення сетера на попередньо створеному об'єкті.

Приклади

// Нестандартний та не рекомендований спосіб

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

Специфікації

Специфікація Статус Коментар
ECMAScript (ECMA-262)
The definition of 'Object.prototype.__defineSetter__()' in that specification.
Living Standard Включено у (нормативний) додаток для додаткової legacy-функціональності ECMAScript для веб-переглядачів (зауважте, що специфікація кодифікує те, що вже реалізовано).

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також