--- title: setter slug: Web/JavaScript/Reference/Functions/set translation_of: Web/JavaScript/Reference/Functions/set ---
Оператор set связывает свойство объекта с функцией, которая будет вызвана при попытке установить это свойство.
{set prop(val) { . . . }}
{set [expression](val) { . . . }}
propvalprop.В JavaScript, сеттер можно использовать для выполнения функции, когда будет попытка изменения указанного свойства. Сеттеры используются чаще всего в сочетании с геттерами для создания одного из видов псевдо-свойства. Невозможно одновременно иметь сеттер для свойства, которое содержит фактическое значение.
Обратите внимание на следующие моменты при работе с синтаксисом set:
{ set x(v) { }, set x(v) { } } и { x: ..., set x(v) { } } запрещены)Сеттер может быть удалён оператором delete.
Это позволит определить псевдо-параметр current объекта o, который задаёт значение, обновляющее значение log:
var o = {
set current (str) {
this.log[this.log.length] = str;
},
log: []
}
обратите внимание, что current не определён и любые попытки доступа к нему вернут undefined.
deleteЕсли вы хотите удалить сеттер, вы можете просто его удалить:
delete o.current;
definePropertyЧтобы добавить сеттер на существующий объект в любое время, используйте {{jsxref("Object.defineProperty()")}}.
var o = { a:0 };
Object.defineProperty(o, "b", { set: function (x) { this.a = x / 2; } });
o.b = 10; // Запускает сеттер, который присваивает 10 / 2 (5) свойству 'a'
console.log(o.a) // 5
var expr = "foo";
var obj = {
baz: "bar",
set [expr](v) { this.baz = v; }
};
console.log(obj.baz); // "bar"
obj.foo = "baz"; // запускает сеттер
console.log(obj.baz); // "baz"
Совместимость с браузерами
{{Compat}}