Metoda JavaScript Object.defineProperty () doda ali spremeni obstoječo lastnost predmeta in vrne predmet.
Sintaksa defineProperty()
metode je:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Način, da statično metodo, ki se imenuje z Object
imenom razreda.
defineProperty () Parametri
defineProperty()
Metoda je v:
- obj - predmet, na katerem naj se določi lastnost.
- prop - ime ali
Symbol
lastnost, ki jo je treba definirati ali spremeniti. - deskriptor - deskriptor lastnosti, ki je definirana ali spremenjena.
Deskriptorji lastnosti, ki so prisotni v objektih, so dveh vrst: deskriptorji podatkov in deskriptorji dostopnikov. Lahko imajo naslednje neobvezne lastnosti.
configurable
enumerable
Deskriptorji podatkov imajo lahko tudi:
value
writable
Deskriptorji dostopnikov imajo lahko tudi:
get
set
Vrnjena vrednost iz defineProperty ()
- Vrne objekt, ki je bil poslan funkciji.
Opomba:
- Vrednosti, dodane z uporabo,
Object.defineProperty()
so privzeto nespremenljive in jih ni mogoče šteti. - Če ima deskriptor nobena od
value
,writable
,get
inset
ključi, se obravnava kot deskriptor podatkov. Če ima deskriptor obe tipkivalue
aliwritable
inget
aliset
, se vrže izjema.
Primer: Dodajanje podatkovne lastnosti predmetu
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
Izhod
788 Nastavitev vrednosti … Pridobivanje vrednosti … 6969
Ne moremo mešati podatkov in deskriptorjev lastnosti dostopnika, saj bi povzročili napako.
Če želite spremeniti lastnosti, predmet je writable
nepremičnina mora biti true
, drugače se ne bo spremenil in vrgel napaka v strogem načinu.
enumerable
Atribut lastnost določa, ali je nepremičnina izbral Object.assign()
ali razpona operaterja.
Za configurable
nadzor atributov hkrati, ali se nepremičnina lahko izbrisali iz objekta in ali njenih lastnosti (razen value
in writable
) je mogoče spremeniti.
Priporočeno branje: Javascript Object defineProperties ()