--- title: setter slug: Web/JavaScript/Reference/Functions/set translation_of: Web/JavaScript/Reference/Functions/set ---
{{jsSidebar("Functions")}}

Składnia set wiąże właściwość obiektu z funkcją, która zostanie wywołana przy próbie przypisania wartości danej właściwości.

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

Składnia

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

Parametry

prop
Nazwa właściwości wiązanej z określoną funkcją.
val
Zmienna przechowująca wartość przekazaną do przypisania do właściwości prop.
expression
Począwszy od ECMAScript 2015, można również użyć wyrażeń w celu połaczenia funkcji z nazwą właściwości, która jest obliczana.

Description

Setter może być użyty do wywołania określonej funkcji przy każdej próbie przypisania wartości do danej właściwości. Settery są najczęściej używane razem z getterami żeby utworzyć rodzaj pseudo-właściwości. Nie ma możliwości jednoczesnego używania settera oraz faktycznej wartości przypisanej do danej właściwości.

Uwagi do składni set:

Setter może być usunięty przy użyciu operatora delete.

Przykłady

Definicja settera w nowym obiekcie podczas inicjalizacji

Poniższa składnia definiuje pseudo-właściwość current obiektu language, która podczas przypisania wartości aktualizuje tablicę log o tą wartość:

var language = {
  set current(name) {
    this.log.push(name);
  },
  log: []
}

language.current = 'EN';
console.log(language.log); // ['EN']

language.current = 'FA';
console.log(language.log); // ['EN', 'FA']

Zwróć uwagę, że właściwość current nie jest zdefiniowana i próby odczytu zwrócą undefined.

Usuwanie settera przy użyciu operatora delete

Setter może zostać usunięty przy użyciu delete:

delete o.current;

Definicja settera dla istniejącego obiektu przy użyciu defineProperty

Aby zdefiniować setter dla istniejącego obiektu po jego uprzednim utworzeniu użyj {{jsxref("Object.defineProperty()")}}.

var o = {a: 0};

Object.defineProperty(o, 'b', { set: function(x) { this.a = x / 2; } });

o.b = 10; // Uruchamia setter, który przypisuje 10 / 2 (5) do właściwości 'a'
console.log(o.a) // 5

Używanie wyrażenia do obliczenia nazwy settera

var expr = 'foo';

var obj = {
  baz: 'bar',
  set [expr](v) { this.baz = v; }
};

console.log(obj.baz); // "bar"
obj.foo = 'baz';      // uruchom setter
console.log(obj.baz); // "baz"

Specyfikacje

Specification Status Comment
{{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}} {{Spec2('ES5.1')}} Initial definition.
{{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}} {{Spec2('ES6')}} Added computed property names.
{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}} {{Spec2('ESDraft')}}  

Zgodność z przeglądarkami

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

Zobacz również