Metode JavaScript Object.defineProperty () pievieno vai pārveido objektā esošo īpašumu un atgriež objektu.
Metodes sintakse defineProperty()
ir šāda:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Metodi, kas ir statiska metode, sauc izmantojot Object
klases nosaukumu.
defineProperty () parametri
defineProperty()
Metode ņem in:
- obj - objekts, uz kura definēt īpašumu.
- prop -
Symbol
definējamā vai maināmā īpašuma nosaukums vai īpašums. - deskriptors - definējamā vai modificētā rekvizīta apraksts.
Objektos esošie īpašību deskriptori ir divu veidu: datu deskriptori un piekļuves deskriptori. Viņiem var būt šādas izvēles īpašības.
configurable
enumerable
Datu aprakstiem var būt arī:
value
writable
Piekļuves aprakstiem var būt arī:
get
set
Atgriezt vērtību no defineProperty ()
- Atgriež objektu, kas tika nodots funkcijai.
Piezīme:
- Pēc noklusējuma vērtības, kas pievienotas, izmantojot,
Object.defineProperty()
ir nemainīgas un nav skaitāmas. - Ja deskriptors nav neviena
value
,writable
,get
unset
atslēgas, tas tiek uzskatīts par datu deskriptoru. Ja deskriptoram ir abasvalue
vaiwritable
un unget
vaiset
atslēgas, tiek izmests izņēmums.
Piemērs: Datu rekvizīta pievienošana objektam
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
Rezultāts
788 Vērtības iestatīšana … Vērtības iegūšana … 6969
Mēs nevaram sajaukt gan datus, gan piekļuves rekvizītus, jo tas radītu kļūdu.
Lai modificētu rekvizītu, objekta writable
rekvizītam ir jābūt true
, pretējā gadījumā tas nemainīs un neizvirzīs kļūdas stingrā režīmā.
enumerable
Īpašums atribūts nosaka, vai īpašums ir palielinājies par Object.assign()
vai izplatīt operators.
Par configurable
atribūtu kontroles vienlaicīgi vai īpašumu var izdzēsti no objekta un vai tās atribūtiem (izņemot value
un writable
) var tikt mainīts.
Ieteicamā literatūra: Javascript Object defineProperties ()