Metodas „JavaScript Object.defineProperty ()“ prideda arba modifikuoja esamą objekto ypatybę ir grąžina objektą.
defineProperty()
Metodo sintaksė yra tokia:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Metodas, būdamas statinis metodas, vadinamas naudojant Object
klasės pavadinimą.
defineProperty () parametrai
defineProperty()
Metodas trunka:
- obj - objektas, kuriame apibrėžiama nuosavybė.
- rekvizitas -
Symbol
apibrėžtino ar modifikuojamo turto pavadinimas . - deskriptorius - apibrėžto ar modifikuojamo turto aprašas.
Objektuose esantys nuosavybės aprašai yra dviejų tipų: duomenų aprašai ir prieigų aprašai. Jie gali turėti šias pasirinktines savybes.
configurable
enumerable
Duomenų aprašai taip pat gali turėti:
value
writable
Prieigos aprašai taip pat gali turėti:
get
set
Grąžinimo vertė iš defineProperty ()
- Grąžina objektą, kuris buvo perduotas funkcijai.
Pastaba:
- Pagal numatytuosius nustatymus pridėtos vertės
Object.defineProperty()
yra nekintamos ir nesuskaičiuojamos. - Jeigu deskriptorius turi nei
value
,writable
,get
irset
raktus, tai yra traktuojama kaip duomenų deskriptorius. Jei deskriptorius turi abuvalue
irwritable
ir,get
arbaset
raktus, išmetama išimtis.
Pavyzdys: duomenų objekto ypatybės pridėjimas
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
Rezultatas
788 Vertės nustatymas … Vertės gavimas … 6969
Negalime maišyti tiek duomenų, tiek prieigos savininkų aprašų, nes tai sukeltų klaidą.
Norint modifikuoti ypatybę, objekto writable
ypatybė turi būti true
, kitaip ji nepakeis ir nepadarys klaidos griežtu režimu.
enumerable
Atributas „ ypatybė“ apibrėžia, ar turtą parenka, Object.assign()
ar paskleidžia operatorius.
Į configurable
Įgūdis kontrolė tuo pačiu metu, ar turtas gali būti išbrauktas iš objekto ir ar jos atributus (išskyrus value
ir writable
) gali būti pakeistas.
Rekomenduojamas skaitymas: „ Javascript Object defineProperties ()“