Javascript Object.defineProperty ()

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.

  • configurable
  • enumerable

En databeskrivare kan också ha:

  • value
  • writable

En accessorbeskrivare kan också ha:

  • get
  • set

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, getoch setnycklar, är det behandlas som en databeskrivning. Om en deskriptor har båda valueeller writableoch geteller setnycklar 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 ()

Intressanta artiklar...