Meetod JavaScript Object.defineProperty () lisab või muudab objektil olemasolevat atribuuti ja tagastab objekti.
Meetodi süntaks defineProperty()
on:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Meetod, olles staatiline meetod, nimetatakse kasutades Object
klassi nimi.
defineProperty () parameetrid
defineProperty()
Meetod võtab:
- obj - objekt, millel omadus määratleda.
- prop -
Symbol
määratletava või muudetava omaduse nimi või omadus. - deskriptor - määratletava või muudetava atribuudi kirjeldaja.
Objektides esinevad omaduste kirjeldajad on kahte tüüpi: andmekirjeldused ja juurdepääsukirjeldused. Neil võivad olla järgmised valikulised omadused.
configurable
enumerable
Andmekirjeldustel võib olla ka:
value
writable
Juurdepääsu kirjeldajatel võib olla ka:
get
set
Tagastage väärtus defineProperty ()
- Tagastab objekti, mis edastati funktsioonile.
Märge:
- Vaikimisi
Object.defineProperty()
on kasutamisel lisatud väärtused muutumatud ega loendatavad. - Kui deskriptor on kumbki
value
,writable
,get
jaset
võtmeid, käsitatakse andmete deskriptor. Kui deskriptoril on mõlemadvalue
jawritable
jaget
võiset
klahvid, visatakse erand.
Näide: andmete atribuudi lisamine objektile
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
Väljund
788 Väärtuse seadmine… Väärtuse saamine … 6969
Me ei saa segada nii andmeid kui ka ligipääsu atribuutide kirjeldajaid, kuna see võib põhjustada vea.
Atribuudi muutmiseks peab olema objekti writable
omadus true
, muidu see ei muuda ega viska vigu ranges režiimis.
enumerable
Omandi atribuut määratleb, kas vara korjatakse Object.assign()
või levikut operaator.
configurable
Atribuut kontrolli samal ajal, kas vara saab kustutada objekti ja kas selle atribuudid (va value
ja writable
) saab muuta.
Soovitatav lugemine: Javascripti objekti defineProperties ()