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.
configurableenumerable
En databeskrivelse kan også have:
valuewritable
En accessor-deskriptor kan også have:
getset
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,getogsetnøgler, behandles den som en datadeskriptor. Hvis en deskriptor har beggevalueellerwritableoggetellersetnø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 ()








