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 Object
numele clasei.
defineProperty () Parametri
defineProperty()
Metoda ia în:
- obj - Obiectul pe care se definește proprietatea.
- prop - Numele sau
Symbol
proprietatea 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
șiset
chei, acesta este tratat ca un descriptor de date. În cazul în care un descriptor are atâtvalue
sauwritable
șiget
sauset
chei, 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 writable
trebuie să fie true
, altfel nu va modifica și nu va arunca erori în modul strict.
enumerable
Atributul de proprietate definește dacă proprietatea este ales de Object.assign()
sau operator de răspândire.
La configurable
comenzile 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 ()