Object.prototype.__defineSetter__()
Не стандартно: Эта функция не стандартизирована. Мы не рекомендуем использовать нестандартные функции в действующих проектах, так как их поддержка браузерами ограничена, а поведение может измениться или быть удалено. Тем не менее, в некоторых случаях, когда нет стандартного решения, они могут быть подходящей альтернативой.
Устарело: Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.
Сводка
Метод __defineSetter__()
привязывает свойство объекта к функции, вызываемой каждый раз при попытке установить значение этого свойства.
Синтаксис
obj.__defineSetter__(prop, fun)
Параметры
Описание
Метод __defineSetter__()
позволяет определять сеттер на уже существующем объекте.
Примеры
// Нестандартный и устаревший способ
const o = {};
o.__defineSetter__("value", function (val) {
this.anotherValue = val;
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Способ, совместимый со стандартом
// Использование оператора set
const o = {
set value(val) {
this.anotherValue = val;
},
};
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Использование метода Object.defineProperty()
const o = {};
Object.defineProperty(o, "value", {
set: function (val) {
this.anotherValue = val;
},
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
Спецификации
Не является частью какой-либо спецификации.