Metoden JavaScript Object.defineProperty () lägger till eller modifierar befintlig egenskap på ett objekt och returnerar objektet.
Syntaxen för defineProperty()metoden är:
Object.defineProperty(obj, prop, descriptor)
Den defineProperty()metod, som är en statisk metod, kallas med hjälp av Objectklassnamnet.
defineProperty () Parametrar
Den defineProperty()metod tar in:
- obj - Objektet som egenskapen ska definieras på.
- prop - Namnet eller
Symbolden fastighet som ska definieras eller ändras. - descriptor - Beskrivningen för egenskapen som definieras eller ändras.
Egenskapsbeskrivare som finns i objekt är av två typer: dataskrivare och accessorbeskrivare. De kan ha följande valfria egenskaper.
configurableenumerable
En databeskrivare kan också ha:
valuewritable
En accessorbeskrivare kan också ha:
getset
Returvärde från defineProperty ()
- Returnerar objektet som skickades till funktionen.
Notera:
- Som standard är värden som läggs till med
Object.defineProperty()oföränderliga och räknas inte. - Om en deskriptor har någon av
value,writable,getochsetnycklar, är det behandlas som en databeskrivning. Om en deskriptor har bådavalueellerwritableochgetellersetnycklar kastas ett undantag.
Exempel: Lägga till en dataegenskap till 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 Ställa in värde … Få värde … 6969
Vi kan inte blanda både data- och accessoregenskapsbeskrivare eftersom det skulle orsaka ett fel.
För att modifiera en egenskap writablemåste objektets egendom vara true, annars kommer det inte att modifieras och kasta fel i strikt läge.
Den enumerableegenskapen attribut definierar om fastigheten plockas av Object.assign()eller spridning operatör.
De configurableattribut kontroller samtidigt huruvida egenskapen kan raderas från objektet och om dess attribut (andra än valueoch writable) kan ändras.
Rekommenderad läsning: Javascript Object defineProperties ()








