Javascript Object.defineProperty ()

JavaScript Object.defineProperty () -metoden legger til eller endrer eksisterende eiendom på et objekt og returnerer objektet.

Syntaksen til defineProperty()metoden er:

 Object.defineProperty(obj, prop, descriptor)

Den defineProperty()metoden, å være en statisk metode, kalles med Objectnavn klassen.

defineProperty () Parametere

Den defineProperty()metoden tar i:

  • obj - Objektet som egenskapen skal defineres på.
  • prop - Navnet på eller Symboleiendommen som skal defineres eller endres.
  • deskriptor - Beskrivelsen for eiendommen som defineres eller endres.

Eiendomsbeskrivelser som er tilstede i objekter er av to typer: datadeskrivere og tilgangsbeskrivere. De kan ha følgende valgfrie egenskaper.

  • configurable
  • enumerable

En datadeskrivere kan også ha:

  • value
  • writable

En tilgangsbeskrivelse kan også ha:

  • get
  • set

Returverdi fra defineProperty ()

  • Returnerer objektet som ble sendt til funksjonen.

Merk:

  • Verdier som legges til ved bruk Object.defineProperty()er som standard uforanderlige og kan ikke telles.
  • Hvis en descriptor har ingen av value, writable, getog setnøkler, blir den behandlet som en databeskrivelse. Hvis en deskriptor har begge valueeller writableog geteller setnøkler, kastes et unntak.

Eksempel: Legge til en dataegenskap til objektet

 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

Produksjon

 788 Angi verdi … Få verdi … 6969

Vi kan ikke blande både data- og tilgangsbeskrivelser, da det ville forårsake en feil.

For å endre en eiendom må objektets writableeiendom være true, ellers vil den ikke endre og kaste feil i streng modus.

Den enumerableegenskap attributten angir om egenskapen blir plukket for Object.assign()eller spres operatør.

De configurableattributt kontroller på samme tid hvorvidt den egenskapen kan slettes fra objektet, og om dens attributter (andre enn valueog writable) kan endres.

Anbefalt lesing: Javascript Object defineProperties ()

Interessante artikler...