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 Object
osztály nevét használja.
defineProperty () Paraméterek
A defineProperty()
módszer:
- obj - A tulajdonság meghatározása.
- prop - A
Symbol
meghatá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
ésset
gombokat, úgy kell tekinteni, mint az adatok leíró. Ha egy leíró egyarántvalue
vagywritable
ésget
vagyset
kulcsok, 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 writable
tulajdonságának kell lennie true
, különben nem módosítja és szigorú módban hibát dob.
A enumerable
tulajdonság attribútum határozza meg, hogy az ingatlant az Object.assign()
operátor választotta-e vagy terjesztette.
Az configurable
attribú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 ()