JavaScript Object.defineProperty () -metoden legger til eller endrer eksisterende eiendom på et objekt og returnerer objektet.
Syntaksen til defineProperty()
metoden er:
Object.defineProperty(obj, prop, descriptor)
Den defineProperty()
metoden, å være en statisk metode, kalles med Object
navn klassen.
defineProperty () Parametere
Den defineProperty()
metoden tar i:
- obj - Objektet som egenskapen skal defineres på.
- prop - Navnet på eller
Symbol
eiendommen som skal defineres eller endres. - deskriptor - Beskrivelsen for eiendommen som defineres eller endres.
Eiendomsbeskrivelser som er tilstede i objekter er av to typer: datadeskrivere og tilgangsbeskrivere. De kan ha følgende valgfrie egenskaper.
configurable
enumerable
En datadeskrivere kan også ha:
value
writable
En tilgangsbeskrivelse kan også ha:
get
set
Returverdi fra defineProperty ()
- Returnerer objektet som ble sendt til funksjonen.
Merk:
- Verdier som legges til ved bruk
Object.defineProperty()
er som standard uforanderlige og kan ikke telles. - Hvis en descriptor har ingen av
value
,writable
,get
ogset
nøkler, blir den behandlet som en databeskrivelse. Hvis en deskriptor har beggevalue
ellerwritable
ogget
ellerset
nøkler, kastes et unntak.
Eksempel: Legge til en dataegenskap 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
Produksjon
788 Angi verdi … Få verdi … 6969
Vi kan ikke blande både data- og tilgangsbeskrivelser, da det ville forårsake en feil.
For å endre en eiendom må objektets writable
eiendom være true
, ellers vil den ikke endre og kaste feil i streng modus.
Den enumerable
egenskap attributten angir om egenskapen blir plukket for Object.assign()
eller spres operatør.
De configurable
attributt kontroller på samme tid hvorvidt den egenskapen kan slettes fra objektet, og om dens attributter (andre enn value
og writable
) kan endres.
Anbefalt lesing: Javascript Object defineProperties ()