Javascript Object.defineProperty ()

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 Objectnázov triedy.

Parametre defineProperty ()

defineProperty()Metóda berie v:

  • obj - Objekt, na ktorom sa má definovať vlastnosť.
  • prop - Názov alebo Symbolvlastnosť, 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, geta settlačidiel, je s ním zaobchádzané ako dátový deskriptor. Ak má deskriptor obidva valuealebo writablea getalebo setkľúč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ť, writablemusí byť vlastnosť objektu true, inak sa nezmení a nevyvolá chybu v prísnom režime.

enumerableAtribút vlastnosť určuje, či je nehnuteľnosť vybral Object.assign()alebo prevádzkovateľ šírenie.

Tieto configurablekontroly atribútov súčasne, či vlastnosť môže byť zmazaný z objektu a že jeho atribútov (iných ako valuea writable) môžu byť zmenené.

Odporúčané čítanie: Objekt Javascript defineProperties ()

Zaujímavé články...