From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../javascript/reference/functions/set/index.html | 152 +++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 files/uk/web/javascript/reference/functions/set/index.html (limited to 'files/uk/web/javascript/reference/functions/set/index.html') diff --git a/files/uk/web/javascript/reference/functions/set/index.html b/files/uk/web/javascript/reference/functions/set/index.html new file mode 100644 index 0000000000..b26e0e2824 --- /dev/null +++ b/files/uk/web/javascript/reference/functions/set/index.html @@ -0,0 +1,152 @@ +--- +title: сетер +slug: Web/JavaScript/Reference/Functions/set +tags: + - ECMAScript 2015 + - ECMAScript 5 + - JavaScript + - set + - функції +translation_of: Web/JavaScript/Reference/Functions/set +--- +
{{jsSidebar("Functions")}}
+ +

Оператор set прив'язує властивість об'єкта до функції, яка буде викликана під час спроби присвоїти значення даній властивості.

+ +

{{EmbedInteractiveExample("pages/js/functions-setter.html")}}

+ + + +

Синтаксис

+ +
{set prop(val) { . . . }}
+{set [expression](val) { . . . }}
+ +

Параметри

+ +
+
prop
+
Ім'я властивості, котра має бути прив'язана до даної функції.
+
+ +
+
val
+
Псевдонім змінної, що містить значення, для якого виконується спроба присвоїти його властивості prop.
+
expression
+
Починаючи від ECMAScript 2015, можна також використовувати вираз для обчислюваного імені властивості, до якої буде прив'язана дана функція.
+
+ +

Опис

+ +

У JavaScript сетер можна використати для виконання функції під час здійснення спроби змінити певну властивість. Найчастіше сетери використовуються у поєднанні з ґетерами для створення свого роду псевдовластивостей. Не можна водночас мати сетера на властивості, яка містить фактичне значення.

+ +

Зауважте особливість використання синтаксису set:

+ +
+ +
+ +

Приклади

+ +

Визначення сетерів на нових об'єктах у об'єктних ініціалізаторах

+ +

Наступний код визначає псевдовластивість 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')}}
+ +

Сумісність з веб-переглядачами

+ + + +

{{Compat("javascript.functions.set")}}

+ +
+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf