„Javascript Object.defineProperty“ ()

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 Objectklasės pavadinimą.

defineProperty () parametrai

defineProperty()Metodas trunka:

  • obj - objektas, kuriame apibrėžiama nuosavybė.
  • rekvizitas - Symbolapibrėž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, getir setraktus, tai yra traktuojama kaip duomenų deskriptorius. Jei deskriptorius turi abu valueir writableir, getarba setraktus, 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 writableypatybė turi būti true, kitaip ji nepakeis ir nepadarys klaidos griežtu režimu.

enumerableAtributas „ 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 valueir writable) gali būti pakeistas.

Rekomenduojamas skaitymas: „ Javascript Object defineProperties ()“

Įdomios straipsniai...