Javascript Object.defineProperty ()

De JavaScript-methode Object.defineProperty () voegt een bestaande eigenschap aan een object toe of wijzigt deze, en retourneert het object.

De syntaxis van de defineProperty()methode is:

 Object.defineProperty(obj, prop, descriptor)

De defineProperty()methode, die een statische methode is, wordt aangeroepen met behulp van de Objectklassenaam.

defineProperty () Parameters

De defineProperty()methode omvat:

  • obj - Het object waarop de eigenschap moet worden gedefinieerd.
  • prop - De naam of Symbolvan de eigenschap die moet worden gedefinieerd of gewijzigd.
  • descriptor - De descriptor voor de eigenschap die wordt gedefinieerd of gewijzigd.

Eigenschapsdescriptoren die aanwezig zijn in objecten zijn van twee soorten: gegevensdescriptoren en accessordescriptoren. Ze kunnen de volgende optionele eigenschappen hebben.

  • configurable
  • enumerable

Een databeschrijver kan ook hebben:

  • value
  • writable

Een accessor-descriptor kan ook hebben:

  • get
  • set

Retourwaarde van defineProperty ()

  • Retourneert het object dat aan de functie is doorgegeven.

Opmerking:

  • Standaard zijn waarden die Object.defineProperty()zijn toegevoegd met onveranderlijk en niet op te noemen.
  • Als een descriptor noch van value, writable, geten settoetsen, wordt deze behandeld als een data descriptor. Als een descriptor beide toetsen valueof writableen getof heeft set, wordt er een uitzondering gegenereerd.

Voorbeeld: een data-eigenschap toevoegen aan een object

 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

Uitvoer

 788 Waarde instellen… Waarde krijgen… 6969

We kunnen niet zowel data als accessor-eigenschapbeschrijvingen combineren, omdat dit een fout zou veroorzaken.

Om een ​​eigenschap te wijzigen, moet de eigenschap van het object writablezijn true, anders verandert het niet en genereert het geen fout in de strikte modus.

Het enumerableeigenschapkenmerk definieert of de eigenschap wordt gekozen door Object.assign()of de spread-operator.

Het configurableattribuut bepaalt tegelijkertijd of de eigenschap uit het object kan worden verwijderd en of de attributen (anders dan valueen writable) kunnen worden gewijzigd.

Aanbevolen literatuur: Javascript-object defineProperties ()

Interessante artikelen...