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
Спецификации
Не является частью какой-либо спецификации.