Javascript Object.defineProperty ()

Metode JavaScript Object.defineProperty () pievieno vai pārveido objektā esošo īpašumu un atgriež objektu.

Metodes sintakse defineProperty()ir šāda:

 Object.defineProperty(obj, prop, descriptor)

defineProperty()Metodi, kas ir statiska metode, sauc izmantojot Objectklases nosaukumu.

defineProperty () parametri

defineProperty()Metode ņem in:

  • obj - objekts, uz kura definēt īpašumu.
  • prop - Symboldefinējamā vai maināmā īpašuma nosaukums vai īpašums.
  • deskriptors - definējamā vai modificētā rekvizīta apraksts.

Objektos esošie īpašību deskriptori ir divu veidu: datu deskriptori un piekļuves deskriptori. Viņiem var būt šādas izvēles īpašības.

  • configurable
  • enumerable

Datu aprakstiem var būt arī:

  • value
  • writable

Piekļuves aprakstiem var būt arī:

  • get
  • set

Atgriezt vērtību no defineProperty ()

  • Atgriež objektu, kas tika nodots funkcijai.

Piezīme:

  • Pēc noklusējuma vērtības, kas pievienotas, izmantojot, Object.defineProperty()ir nemainīgas un nav skaitāmas.
  • Ja deskriptors nav neviena value, writable, getun setatslēgas, tas tiek uzskatīts par datu deskriptoru. Ja deskriptoram ir abas valuevai writableun un getvai setatslēgas, tiek izmests izņēmums.

Piemērs: Datu rekvizīta pievienošana objektam

 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

Rezultāts

 788 Vērtības iestatīšana … Vērtības iegūšana … 6969

Mēs nevaram sajaukt gan datus, gan piekļuves rekvizītus, jo tas radītu kļūdu.

Lai modificētu rekvizītu, objekta writablerekvizītam ir jābūt true, pretējā gadījumā tas nemainīs un neizvirzīs kļūdas stingrā režīmā.

enumerableĪpašums atribūts nosaka, vai īpašums ir palielinājies par Object.assign()vai izplatīt operators.

Par configurableatribūtu kontroles vienlaicīgi vai īpašumu var izdzēsti no objekta un vai tās atribūtiem (izņemot valueun writable) var tikt mainīts.

Ieteicamā literatūra: Javascript Object defineProperties ()

Interesanti raksti...