Javascript Object.defineProperty ()

Die JavaScript Object.defineProperty () -Methode fügt vorhandene Eigenschaften für ein Objekt hinzu oder ändert sie und gibt das Objekt zurück.

Die Syntax der defineProperty()Methode lautet:

 Object.defineProperty(obj, prop, descriptor)

Die defineProperty()Methode ist eine statische Methode und wird unter Verwendung des ObjectKlassennamens aufgerufen .

defineProperty () Parameter

Die defineProperty()Methode umfasst:

  • obj - Das Objekt, für das die Eigenschaft definiert werden soll.
  • prop - Der Name oder Symboldie Eigenschaft, die definiert oder geändert werden soll.
  • Deskriptor - Der Deskriptor für die Eigenschaft, die definiert oder geändert wird.

Es gibt zwei Arten von Eigenschaftsdeskriptoren, die in Objekten vorhanden sind: Datendeskriptoren und Accessordeskriptoren. Sie können die folgenden optionalen Eigenschaften haben.

  • configurable
  • enumerable

Ein Datendeskriptor kann auch haben:

  • value
  • writable

Ein Accessor-Deskriptor kann auch haben:

  • get
  • set

Rückgabewert von defineProperty ()

  • Gibt das Objekt zurück, das an die Funktion übergeben wurde.

Hinweis:

  • Standardmäßig sind mit addierte Werte Object.defineProperty()unveränderlich und nicht aufzählbar.
  • Wenn ein Deskriptor keines hat value, writable, getund setTasten, wird es als ein Datendeskriptor behandelt. Wenn ein Deskriptor beide valueoder writableund getoder setSchlüssel hat, wird eine Ausnahme ausgelöst.

Beispiel: Hinzufügen einer Dateneigenschaft zum Objekt

 let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969

Ausgabe

 788 Wert setzen… Wert bekommen… 6969

Wir können nicht sowohl Daten- als auch Accessor-Eigenschaftsbeschreibungen mischen, da dies einen Fehler auslösen würde.

Um eine Eigenschaft zu ändern, muss die Eigenschaft des Objekts writablesein true, sonst wird es nicht geändert und im strengen Modus wird kein Fehler ausgegeben.

Das enumerableEigenschaftsattribut definiert, ob die Eigenschaft vom Object.assign()Operator ausgewählt oder verteilt wird.

Das configurableAttribut steuert gleichzeitig, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer valueund writable) geändert werden können.

Empfohlene Lektüre: Javascript Object defineProperties ()

Interessante Beiträge...