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 Objectimenom razreda.
defineProperty () Parametri
defineProperty()Metoda je v:
- obj - predmet, na katerem naj se določi lastnost.
- prop - ime ali
Symbollastnost, 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.
configurableenumerable
Deskriptorji podatkov imajo lahko tudi:
valuewritable
Deskriptorji dostopnikov imajo lahko tudi:
getset
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,getinsetključi, se obravnava kot deskriptor podatkov. Če ima deskriptor obe tipkivaluealiwritableingetaliset, 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 writablenepremičnina mora biti true, drugače se ne bo spremenil in vrgel napaka v strogem načinu.
enumerableAtribut lastnost določa, ali je nepremičnina izbral Object.assign()ali razpona operaterja.
Za configurablenadzor atributov hkrati, ali se nepremičnina lahko izbrisali iz objekta in ali njenih lastnosti (razen valuein writable) je mogoče spremeniti.
Priporočeno branje: Javascript Object defineProperties ()







