--- title: сетер slug: Web/JavaScript/Reference/Functions/set tags: - ECMAScript 2015 - ECMAScript 5 - JavaScript - set - функції translation_of: Web/JavaScript/Reference/Functions/set ---
Оператор set прив'язує властивість об'єкта до функції, яка буде викликана під час спроби присвоїти значення даній властивості.
{{EmbedInteractiveExample("pages/js/functions-setter.html")}}
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
{set prop(val) { . . . }}
{set [expression](val) { . . . }}
propvalprop.У JavaScript сетер можна використати для виконання функції під час здійснення спроби змінити певну властивість. Найчастіше сетери використовуються у поєднанні з ґетерами для створення свого роду псевдовластивостей. Не можна водночас мати сетера на властивості, яка містить фактичне значення.
Зауважте особливість використання синтаксису set:
{ set x(v) { }, set x(v) { } } та { x: ..., set x(v) { } } заборонені)Наступний код визначає псевдовластивість current об'єкта language. Коли current присвоюється значення, це змінює log на таке саме значення:
const language = {
  set current(name) {
    this.log.push(name);
  },
  log: []
}
language.current = 'EN';
console.log(language.log); // ['EN']
language.current = 'UA';
console.log(language.log); // ['EN', 'UA']
Зверніть увагу, що  властивість current не визначена, і будь-які спроби звернутись до неї повернуть значення undefined.
deleteЯкщо вам потрібно прибрати сетер, ви можете його просто {{jsxref("Operators/delete", "видалити")}}:
delete o.current;
definePropertyЩоб додати сетер до існуючого об'єкта, використовуйте {{jsxref("Object.defineProperty()")}}.
const 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
const expr = 'foo';
const obj = {
  baz: 'bar',
  set [expr](v) { this.baz = v; }
};
console.log(obj.baz);
// "bar"
obj.foo = 'baz';
// запустити сетер
console.log(obj.baz);
// "baz"
| Специфікація | 
|---|
| {{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}} | 
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.functions.set")}}