Javascript Object.defineProperty ()

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.

  • 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, geta settlačítek, je s ním zacházeno jako datový deskriptor. Pokud má deskriptor klíče oba valuenebo writablea getnebo set, 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 ()

Zajímavé články...