Ця функціональність не рекомендована до використання на користь синтаксису ініціалізації об'єктів або 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