Metoda JavaScript Object.defineProperty () přidává nebo upravuje existující vlastnost objektu a vrací objekt.
Syntaxe defineProperty()
metody je:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Metoda je statické metody, je nazýván pomocí Object
název třídy.
defineProperty () parametry
defineProperty()
Metoda bere v:
- obj - Objekt, na kterém má být definována vlastnost.
- prop - Název nebo
Symbol
vlastnost, která má být definována nebo změněna. - deskriptor - deskriptor vlastnosti, která se definuje nebo upravuje.
Deskriptory vlastností přítomné v objektech jsou dvou typů: deskriptory dat a deskriptory přistupujících objektů. Mohou mít následující volitelné vlastnosti.
configurable
enumerable
Deskriptory dat mohou mít také:
value
writable
Deskriptory accessoru mohou mít také:
get
set
Vrátit hodnotu z defineProperty ()
- Vrátí objekt, který byl předán funkci.
Poznámka:
- Ve výchozím nastavení jsou hodnoty přidané pomocí
Object.defineProperty()
neměnné a nelze je vyčíslit. - Je-li deskriptor nemá ani o
value
,writable
,get
aset
tlačítek, je s ním zacházeno jako datový deskriptor. Pokud má deskriptor klíče obavalue
nebowritable
aget
neboset
, je vyvolána výjimka.
Příklad: Přidání datové vlastnosti do 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ýstup
788 Nastavení hodnoty … Získání hodnoty … 6969
Nemůžeme kombinovat deskriptory vlastností dat i přístupového objektu, protože by to způsobilo chybu.
Chcete-li upravit vlastnost, writable
musí být vlastnost objektu true
, jinak se nezmění a nevyvolá chybu v přísném režimu.
Atribut enumerable
vlastnosti definuje, zda je vlastnost vybrána Object.assign()
nebo operátor šíření.
Tyto configurable
kontroly atributů současně, zda vlastnost může být smazán z objektu a zda jeho atributů (jiných než value
a writable
) mohou být změněny.
Doporučené čtení: Javascript Object defineProperties ()