Object.prototype.__defineSetter__()

Не стандартно: Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Устарело: Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.

Сводка

Метод __defineSetter__() привязывает свойство объекта к функции, вызываемой каждый раз при попытке установить значение этого свойства.

Синтаксис

obj.__defineSetter__(prop, fun)

Параметры

prop

Строка, содержащая имя свойства, привязываемого к заданной функции.

fun

Функция, вызываемая при попытке установить значение указанному свойству. Эта функция имеет вид:

function(val) { . . . }
val

Псевдоним переменной, содержащей значение, которое пытаются присвоить свойству prop.

Описание

Метод __defineSetter__() позволяет определять сеттер на уже существующем объекте.

Примеры

js
// Нестандартный и устаревший способ

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

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

Не является частью какой-либо спецификации.

Совместимость с браузерами

BCD tables only load in the browser

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