Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Funktionen
  5. set

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

set

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

Dieset-Syntax bindet eine Objekt-Eigenschaft an eine Funktion, die aufgerufen wird, wenn versucht wird, diese Eigenschaft zu setzen. Sie kann auch inKlassen verwendet werden.

Probieren Sie es aus

const language = {  set current(name) {    this.log.push(name);  },  log: [],};language.current = "EN";language.current = "FA";console.log(language.log);// Expected output: Array ["EN", "FA"]

Syntax

js
{ set prop(val) { /* … */ } }{ set [expression](val) { /* … */ } }

Es gibt einige zusätzliche Syntaxeinschränkungen:

  • Ein Setter muss genau einen Parameter haben.

Parameter

prop

Der Name der Eigenschaft, die an die gegebene Funktion gebunden werden soll. Wie bei anderen Eigenschaften inObjektinitialisierungen kann es sich um ein String-Literal, ein Zahlenliteral oder einen Bezeichner handeln.

val

Ein Alias für die Variable, die den Wert hält, derprop zugewiesen werden soll.

expression

Sie können auch Ausdrücke für einen berechneten Eigenschaftsnamen verwenden, um diesen an die gegebene Funktion zu binden.

Beschreibung

In JavaScript kann ein Setter verwendet werden, um eine Funktion auszuführen, wenn versucht wird, den Wert einer Eigenschaft zu ändern. Setter werden meistens in Verbindung mit Gettern verwendet.

Eine Objekteigenschaft ist entweder eine Dateneigenschaft oder eine Zugriffseigenschaft, sie kann aber nicht gleichzeitig beides sein. Lesen SieObject.defineProperty() für mehr Informationen. Die Setzer-Syntax erlaubt es Ihnen, die Setzerfunktion in einer Objektinitialisierung anzugeben.

js
const obj = {  set prop() {    // setter, the code executed when setting obj.prop  },}

Eigenschaften, die mit dieser Syntax definiert sind, sind Eigenobjekteigenschaften des erstellten Objekts, und sie sind konfigurierbar und aufzählbar.

Beispiele

Definieren eines Setzers auf neuen Objekten in Objektinitialisierungen

Das folgende Beispiel definiert eine Pseudo-Eigenschaftcurrent des Objektslanguage. Wenncurrent ein Wert zugewiesen wird, wirdlog mit diesem Wert aktualisiert:

js
const 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']

Beachten Sie, dasscurrent nicht definiert ist und jeder Versuch, darauf zuzugreifen, zuundefined führt.

Verwendung von Setzern in Klassen

Sie können die exakt gleiche Syntax verwenden, um öffentliche Instanz-Setzer zu definieren, die auf Klasseninstanzen verfügbar sind. In Klassen ist kein Komma-Trenner zwischen Methoden erforderlich.

js
class ClassWithGetSet {  #msg = "hello world";  get msg() {    return this.#msg;  }  set msg(x) {    this.#msg = `hello ${x}`;  }}const instance = new ClassWithGetSet();console.log(instance.msg); // "hello world"instance.msg = "cake";console.log(instance.msg); // "hello cake"

Setter-Eigenschaften sind auf derprototype-Eigenschaft der Klasse definiert und werden daher von allen Instanzen der Klasse geteilt. Im Gegensatz zu Setter-Eigenschaften in Objektliteralen sind Setter-Eigenschaften in Klassen nicht aufzählbar.

Statische Setter und private Setter verwenden ähnliche Syntaxen, die auf den Seiten zustatic undprivaten Elementen beschrieben sind.

Entfernen eines Setzers mit demdelete-Operator

Wenn Sie den Setter entfernen möchten, können Sie ihn einfachlöschen;

js
delete language.current;

Definieren eines Setzers auf bestehenden Objekten mitdefineProperty

Um einen Setter zu einembestehenden Objekt hinzuzufügen, verwenden SieObject.defineProperty().

js
const o = { a: 0 };Object.defineProperty(o, "b", {  set(x) {    this.a = x / 2;  },});o.b = 10;// Runs the setter, which assigns 10 / 2 (5) to the 'a' propertyconsole.log(o.a); // 5

Verwenden eines berechneten Eigenschaftsnamen

js
const expr = "foo";const obj = {  baz: "bar",  set [expr](v) {    this.baz = v;  },};console.log(obj.baz); // "bar"obj.foo = "baz";// Run the setterconsole.log(obj.baz); // "baz"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-method-definitions

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp