Javascript Object.defineProperty ()

A JavaScript Object.defineProperty () metódus hozzáadja vagy módosítja az objektum meglévő tulajdonságát, és visszaadja az objektumot.

A defineProperty()módszer szintaxisa :

 Object.defineProperty(obj, prop, descriptor)

A defineProperty()módszer statikus módszerként az Objectosztály nevét használja.

defineProperty () Paraméterek

A defineProperty()módszer:

  • obj - A tulajdonság meghatározása.
  • prop - A Symbolmeghatározandó vagy módosítandó tulajdonság neve vagy neve .
  • leíró - A definiálandó vagy módosított tulajdonság leírója.

Az objektumokban jelen lévő tulajdonságleírók kétféle típusúak: adatleírók és hozzáférési leírók. A következő opcionális tulajdonságokkal rendelkezhetnek.

  • configurable
  • enumerable

Az adatleíróknak lehetnek:

  • value
  • writable

A hozzáférési leíróknak a következők is lehetnek:

  • get
  • set

Visszatérési érték a defineProperty () értékből

  • Visszaadja a függvénynek átadott objektumot.

Jegyzet:

  • Alapértelmezés szerint a használatával hozzáadott értékek Object.defineProperty()változhatatlanok és nem számolhatók.
  • Ha egy leíró egyikkel sem rendelkezik value, writable, getés setgombokat, úgy kell tekinteni, mint az adatok leíró. Ha egy leíró egyaránt valuevagy writableés getvagy setkulcsok, kivételt dob.

Példa: Adattulajdonság hozzáadása az objektumhoz

 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

Kimenet

 788 Érték beállítása … Érték megszerzése … 6969

Nem keverhetjük össze az adatokat és az accessor tulajdonságleírókat, mivel ez hibát okozna.

Tulajdonság módosításához az objektum writabletulajdonságának kell lennie true, különben nem módosítja és szigorú módban hibát dob.

A enumerabletulajdonság attribútum határozza meg, hogy az ingatlant az Object.assign()operátor választotta-e vagy terjesztette.

Az configurableattribútum egyidejűleg szabályozza, hogy a tulajdonság törölhető-e az objektumból, és hogy az attribútumai ( valueés nem writable) megváltoztathatók-e.

Ajánlott olvasmány: Javascript Object defineProperties ()

érdekes cikkek...