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 Object
Klassennamens aufgerufen .
defineProperty () Parameter
Die defineProperty()
Methode umfasst:
- obj - Das Objekt, für das die Eigenschaft definiert werden soll.
- prop - Der Name oder
Symbol
die 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
,get
undset
Tasten, wird es als ein Datendeskriptor behandelt. Wenn ein Deskriptor beidevalue
oderwritable
undget
oderset
Schlü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 writable
sein true
, sonst wird es nicht geändert und im strengen Modus wird kein Fehler ausgegeben.
Das enumerable
Eigenschaftsattribut definiert, ob die Eigenschaft vom Object.assign()
Operator ausgewählt oder verteilt wird.
Das configurable
Attribut steuert gleichzeitig, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer value
und writable
) geändert werden können.
Empfohlene Lektüre: Javascript Object defineProperties ()