Javascript Object.defineProperty ()

Metoda JavaScript Object.defineProperty () adaugă sau modifică proprietatea existentă pe un obiect și returnează obiectul.

Sintaxa defineProperty()metodei este:

 Object.defineProperty(obj, prop, descriptor)

defineProperty()Metoda, fiind o metodă statică, se numește folosind Objectnumele clasei.

defineProperty () Parametri

defineProperty()Metoda ia în:

  • obj - Obiectul pe care se definește proprietatea.
  • prop - Numele sau Symbolproprietatea care urmează să fie definită sau modificată.
  • descriptor - Descriptorul proprietății care este definit sau modificat.

Descriptorii de proprietăți prezenți în obiecte sunt de două tipuri: descriptori de date și descriptori de accesori. Ele pot avea următoarele proprietăți opționale.

  • configurable
  • enumerable

Un descriptor de date poate avea, de asemenea:

  • value
  • writable

Un descriptor accesor poate avea, de asemenea:

  • get
  • set

Returnează valoarea din defineProperty ()

  • Returnează obiectul care a fost transmis funcției.

Notă:

  • În mod implicit, valorile adăugate folosind Object.defineProperty()sunt imuabile și nu enumerabile.
  • În cazul în care un descriptor nu are nici de value, writable, getși setchei, acesta este tratat ca un descriptor de date. În cazul în care un descriptor are atât valuesau writableși getsau setchei, o excepție este aruncată.

Exemplu: Adăugarea unei proprietăți de date la obiect

 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

Ieșire

 788 Setarea valorii … Obținerea valorii … 6969

Nu putem amesteca atât date cât și descriptori de proprietăți accesori, deoarece ar genera o eroare.

Pentru a modifica o proprietate, proprietatea obiectului writabletrebuie să fie true, altfel nu va modifica și nu va arunca erori în modul strict.

enumerableAtributul de proprietate definește dacă proprietatea este ales de Object.assign()sau operator de răspândire.

La configurablecomenzile de atribute în același timp , dacă proprietatea poate fi ștearsă de obiect și dacă atributele sale (altele decât valueși writable) pot fi modificate.

Lectură recomandată: obiect Javascript defineProperties ()

Articole interesante...