Metóda JavaScript Object.defineProperty () pridáva alebo upravuje existujúcu vlastnosť objektu a vracia objekt.
Syntax defineProperty()
metódy je:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Metóda je statické metódy, je nazývaný pomocou Object
názov triedy.
Parametre defineProperty ()
defineProperty()
Metóda berie v:
- obj - Objekt, na ktorom sa má definovať vlastnosť.
- prop - Názov alebo
Symbol
vlastnosť, ktorá sa má definovať alebo upraviť. - deskriptor - deskriptor vlastnosti, ktorá sa definuje alebo upravuje.
Deskriptory vlastností prítomné v objektoch sú dvoch typov: deskriptory údajov a deskriptory pristupujúcich objektov. Môžu mať nasledujúce voliteľné vlastnosti.
configurable
enumerable
Deskriptory údajov môžu mať tiež:
value
writable
Deskriptory prístupového typu môžu mať tiež:
get
set
Vrátiť hodnotu z defineProperty ()
- Vráti objekt, ktorý bol odovzdaný funkcii.
Poznámka:
- Hodnoty pridané pomocou
Object.defineProperty()
sú predvolene nemenné a nie vymenovateľné. - Ak je deskriptor nemá ani o
value
,writable
,get
aset
tlačidiel, je s ním zaobchádzané ako dátový deskriptor. Ak má deskriptor obidvavalue
alebowritable
aget
aleboset
kľúče, vyvolá sa výnimka.
Príklad: Pridanie dátovej vlastnosti k objektu
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
Výkon
788 Nastavenie hodnoty … Získanie hodnoty … 6969
Nemôžeme kombinovať deskriptory vlastností údajov aj prístupového objektu, pretože by to spôsobilo chybu.
Ak chcete upraviť vlastnosť, writable
musí byť vlastnosť objektu true
, inak sa nezmení a nevyvolá chybu v prísnom režime.
enumerable
Atribút vlastnosť určuje, či je nehnuteľnosť vybral Object.assign()
alebo prevádzkovateľ šírenie.
Tieto configurable
kontroly atribútov súčasne, či vlastnosť môže byť zmazaný z objektu a že jeho atribútov (iných ako value
a writable
) môžu byť zmenené.
Odporúčané čítanie: Objekt Javascript defineProperties ()