JavaScript Object.defineProperty () -menetelmä lisää tai muokkaa objektin olemassa olevaa ominaisuutta ja palauttaa objektin.
Menetelmän syntaksi defineProperty()
on:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Menetelmä, joka on staattinen menetelmä, kutsutaan käyttää Object
luokan nimi.
defineProperty () -parametrit
defineProperty()
Menetelmä vie:
- obj - kohde, jolle ominaisuus määritetään.
- prop -
Symbol
määriteltävän tai muutettavan ominaisuuden nimi tai ominaisuus. - descriptor - määriteltävän tai muutettavan ominaisuuden kuvaaja.
Kohteissa olevat ominaisuuskuvaajat ovat kahta tyyppiä: datakuvaajat ja pääsykuvaajat. Niillä voi olla seuraavat valinnaiset ominaisuudet.
configurable
enumerable
Datakuvaajilla voi olla myös:
value
writable
Lisäosakuvaajilla voi olla myös:
get
set
Palautusarvo defineProperty ()
- Palauttaa toiminnolle välitetyn objektin.
Huomautus:
- Oletusarvon mukaan lisätyt arvot
Object.defineProperty()
ovat muuttumattomia eikä niitä voida lukea. - Jos avainsana on kumpikaan
value
,writable
,get
jaset
avaimet, se käsitellään tietoja avainsana. Jos kuvaimessa on molemmatvalue
taiwritable
ja jaget
taiset
-näppäimet, heitetään poikkeus.
Esimerkki: Dataominaisuuden lisääminen objektiin
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
Tuotos
788 Arvon asettaminen… Arvon saaminen … 6969
Emme voi sekoittaa sekä tietoja että pääsyomaisuuden kuvaajia, koska se aiheuttaisi virheen.
Ominaisuuden muokkaamiseksi objektin writable
ominaisuuden on oltava true
, muuten se ei muuta ja heitä virheitä tiukassa tilassa.
enumerable
Omaisuus attribuutti määrittää, onko kohde poimitaan Object.assign()
tai levitä operaattori.
configurable
Attribuutti tarkastukset samalla onko omaisuus voidaan poistaa kohteesta, ja onko sen ominaisuuksia (muut kuin value
ja writable
) voidaan muuttaa.
Suositeltava lukeminen: Javascript Object defineProperties ()