JavaScript Object.defineProperty () -metoden tilføjer eller ændrer eksisterende egenskab på et objekt og returnerer objektet.
Metodens syntaks defineProperty()
er:
Object.defineProperty(obj, prop, descriptor)
Den defineProperty()
metode, som er en statisk metode, der kaldes ved hjælp af Object
navnet klassen.
defineProperty () Parametre
Den defineProperty()
metode tager i:
- obj - Det objekt, hvorpå ejendommen skal defineres.
- prop - Navnet på eller
Symbol
ejendommen, der skal defineres eller ændres. - deskriptor - Beskrivelsen af ejendommen, der defineres eller ændres.
Ejendomsbeskrivere, der er til stede i objekter, er af to typer: databeskrivere og adgangsbeskrivere. De kan have følgende valgfri egenskaber.
configurable
enumerable
En databeskrivelse kan også have:
value
writable
En accessor-deskriptor kan også have:
get
set
Returneringsværdi fra defineProperty ()
- Returnerer det objekt, der blev sendt til funktionen.
Bemærk:
- Som standard er værdier tilføjet ved hjælp af
Object.defineProperty()
uforanderlige og kan ikke tælles. - Hvis en deskriptor har ingen af
value
,writable
,get
ogset
nøgler, behandles den som en datadeskriptor. Hvis en deskriptor har beggevalue
ellerwritable
ogget
ellerset
nøgler, kastes en undtagelse.
Eksempel: Tilføjelse af en dataegenskab til objektet
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
Produktion
788 Indstilling af værdi … Få værdi … 6969
Vi kan ikke blande både data- og accessoregenskabsbeskrivere, da det ville give en fejl.
For at ændre en egenskab skal objektets writable
ejendom være true
, ellers vil den ikke ændre og kaste fejl i streng tilstand.
Den enumerable
ejendom attribut definerer, om ejendommen er plukket af Object.assign()
eller spredes operatør.
De configurable
kontroller attribut på samme tid, om ejendommen kan slettes fra objektet, og om dets attributter (bortset value
og writable
) kan ændres.
Anbefalet læsning: Javascript Object defineProperties ()