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 Object
klassenaam.
defineProperty () Parameters
De defineProperty()
methode omvat:
- obj - Het object waarop de eigenschap moet worden gedefinieerd.
- prop - De naam of
Symbol
van 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
,get
enset
toetsen, wordt deze behandeld als een data descriptor. Als een descriptor beide toetsenvalue
ofwritable
enget
of 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 writable
zijn true
, anders verandert het niet en genereert het geen fout in de strikte modus.
Het enumerable
eigenschapkenmerk definieert of de eigenschap wordt gekozen door Object.assign()
of de spread-operator.
Het configurable
attribuut bepaalt tegelijkertijd of de eigenschap uit het object kan worden verwijderd en of de attributen (anders dan value
en writable
) kunnen worden gewijzigd.
Aanbevolen literatuur: Javascript-object defineProperties ()