Javascript Object.defineProperty ()

JavaScript Object.defineProperty () -metoden tilføjer eller ændrer eksisterende egenskab på et objekt og returnerer objektet.

Metodens syntaks defineProperty()er:

 Object.defineProperty(obj, prop, descriptor)

Den defineProperty()metode, som er en statisk metode, der kaldes ved hjælp af Objectnavnet klassen.

defineProperty () Parametre

Den defineProperty()metode tager i:

  • obj - Det objekt, hvorpå ejendommen skal defineres.
  • prop - Navnet på eller Symbolejendommen, der skal defineres eller ændres.
  • deskriptor - Beskrivelsen af ​​ejendommen, der defineres eller ændres.

Ejendomsbeskrivere, der er til stede i objekter, er af to typer: databeskrivere og adgangsbeskrivere. De kan have følgende valgfri egenskaber.

  • configurable
  • enumerable

En databeskrivelse kan også have:

  • value
  • writable

En accessor-deskriptor kan også have:

  • get
  • set

Returneringsværdi fra defineProperty ()

  • Returnerer det objekt, der blev sendt til funktionen.

Bemærk:

  • Som standard er værdier tilføjet ved hjælp af Object.defineProperty()uforanderlige og kan ikke tælles.
  • Hvis en deskriptor har ingen af value, writable, getog setnøgler, behandles den som en datadeskriptor. Hvis en deskriptor har begge valueeller writableog geteller setnøgler, kastes en undtagelse.

Eksempel: Tilføjelse af en dataegenskab 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

Produktion

 788 Indstilling af værdi … Få værdi … 6969

Vi kan ikke blande både data- og accessoregenskabsbeskrivere, da det ville give en fejl.

For at ændre en egenskab skal objektets writableejendom være true, ellers vil den ikke ændre og kaste fejl i streng tilstand.

Den enumerableejendom attribut definerer, om ejendommen er plukket af Object.assign()eller spredes operatør.

De configurablekontroller attribut på samme tid, om ejendommen kan slettes fra objektet, og om dets attributter (bortset valueog writable) kan ændres.

Anbefalet læsning: Javascript Object defineProperties ()

Interessante artikler...