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.
configurableenumerable
Een databeschrijver kan ook hebben:
valuewritable
Een accessor-descriptor kan ook hebben:
getset
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,getensettoetsen, wordt deze behandeld als een data descriptor. Als een descriptor beide toetsenvalueofwritableengetof heeftset, 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 ()








