Javascript Object.defineProperty ()

Metoda JavaScript Object.defineProperty () doda ali spremeni obstoječo lastnost predmeta in vrne predmet.

Sintaksa defineProperty()metode je:

 Object.defineProperty(obj, prop, descriptor)

defineProperty()Način, da statično metodo, ki se imenuje z Objectimenom razreda.

defineProperty () Parametri

defineProperty()Metoda je v:

  • obj - predmet, na katerem naj se določi lastnost.
  • prop - ime ali Symbollastnost, ki jo je treba definirati ali spremeniti.
  • deskriptor - deskriptor lastnosti, ki je definirana ali spremenjena.

Deskriptorji lastnosti, ki so prisotni v objektih, so dveh vrst: deskriptorji podatkov in deskriptorji dostopnikov. Lahko imajo naslednje neobvezne lastnosti.

  • configurable
  • enumerable

Deskriptorji podatkov imajo lahko tudi:

  • value
  • writable

Deskriptorji dostopnikov imajo lahko tudi:

  • get
  • set

Vrnjena vrednost iz defineProperty ()

  • Vrne objekt, ki je bil poslan funkciji.

Opomba:

  • Vrednosti, dodane z uporabo, Object.defineProperty()so privzeto nespremenljive in jih ni mogoče šteti.
  • Če ima deskriptor nobena od value, writable, getin setključi, se obravnava kot deskriptor podatkov. Če ima deskriptor obe tipki valueali writablein getali set, se vrže izjema.

Primer: Dodajanje podatkovne lastnosti predmetu

 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

Izhod

 788 Nastavitev vrednosti … Pridobivanje vrednosti … 6969

Ne moremo mešati podatkov in deskriptorjev lastnosti dostopnika, saj bi povzročili napako.

Če želite spremeniti lastnosti, predmet je writablenepremičnina mora biti true, drugače se ne bo spremenil in vrgel napaka v strogem načinu.

enumerableAtribut lastnost določa, ali je nepremičnina izbral Object.assign()ali razpona operaterja.

Za configurablenadzor atributov hkrati, ali se nepremičnina lahko izbrisali iz objekta in ali njenih lastnosti (razen valuein writable) je mogoče spremeniti.

Priporočeno branje: Javascript Object defineProperties ()

Zanimive Članki...