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í Objectnázev třídy.
defineProperty () parametry
defineProperty()Metoda bere v:
- obj - Objekt, na kterém má být definována vlastnost.
- prop - Název nebo
Symbolvlastnost, 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.
configurableenumerable
Deskriptory dat mohou mít také:
valuewritable
Deskriptory accessoru mohou mít také:
getset
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,getasettlačítek, je s ním zacházeno jako datový deskriptor. Pokud má deskriptor klíče obavaluenebowritableagetneboset, 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, writablemusí být vlastnost objektu true, jinak se nezmění a nevyvolá chybu v přísném režimu.
Atribut enumerablevlastnosti definuje, zda je vlastnost vybrána Object.assign()nebo operátor šíření.
Tyto configurablekontroly atributů současně, zda vlastnost může být smazán z objektu a zda jeho atributů (jiných než valuea writable) mohou být změněny.
Doporučené čtení: Javascript Object defineProperties ()








