Javascript Object.defineProperty ()

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ää Objectluokan nimi.

defineProperty () -parametrit

defineProperty()Menetelmä vie:

  • obj - kohde, jolle ominaisuus määritetään.
  • prop - Symbolmää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, getja setavaimet, se käsitellään tietoja avainsana. Jos kuvaimessa on molemmat valuetai writableja ja gettai set-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 writableominaisuuden on oltava true, muuten se ei muuta ja heitä virheitä tiukassa tilassa.

enumerableOmaisuus attribuutti määrittää, onko kohde poimitaan Object.assign()tai levitä operaattori.

configurableAttribuutti tarkastukset samalla onko omaisuus voidaan poistaa kohteesta, ja onko sen ominaisuuksia (muut kuin valueja writable) voidaan muuttaa.

Suositeltava lukeminen: Javascript Object defineProperties ()

Mielenkiintoisia artikkeleita...