References

Object.create()

Leírás

Üres objektumot egyszerű az üres objektum-literáltok hozhatunk létre.

Objektum létrehozása az Object.create függvény segítségével is lehetőséges, amelynek kötelező paraméterként meg kell adni, hogy melyik objektum legyen a létrejövő objektum prototípusa.

Ha az üres objektumliterállal kompatibilis objektum létrehozása a cél, akkor, de Object.prototype adandó meg, ha viszont nem szeretnénk prototípus-objektumot megadni, akkor null értéket írjunk a helyére.

A létrehozandó tulajdonságok finomhangolását lehet elvégezni az Object.create(prototype, descriptors) metódus segítségével, ahol második paraméterként lehet megadni az egyes tulajdonságok leíróobjektumait objektumliterál formájában.

Az objektumliterállal kompatibilis objektum megadásához a configurable, enumarable, és writable attribútumok igazira állítása szükséges, ugyanis ezek explicit beállítás híján alapértelmezetten hamisak.

Dinamikus objektumok alatt azt értjük, hogy tulajdonságaik tetszőlegesen módosíthatók, bővíthetők, törölhetők.

Így például lehetővé válik annak beállítása, hogy egy tulajdonság értéke megváltoztatható-e (writable), felsorolható-e (enumarable) vagy törölhető-e (configurable). Tovább lehetőség van egy tulajdonság értékének lekérdezésére és megváltoztatására függvények segítségével (getter és setter).

Ezeket a beállításokat egy ún. tulajdonság leíróobjektum (descriptor) keresztül tudjuk megadni, melynek a következő értékei lehetnek:

  • value: a tulajdonság értéke, az alapértelmezetten undefined
  • writable: megváltoztatható-e egy tulajdonság értéke, az alapértelmezetten false
  • enumerable: megjelenik-e az adott tulajdonság a for...in ciklusban vagy az Object.keys felsorolásban, alapértelmezetten false
  • configurable: törölhető-e tulajdonság, vagy változtatható-e bármelyik itt tárgyait attribútuma, alapértelmezetten false
  • set: setter, alapértelmezetten undefined
  • get: getter, alapértelmezetten undefined

Szintaxis

Object.create(proto)
Object.create(proto, propertiesObject)

Példa

const person = {
  isHuman: false,
  printIntroduction: function () {
    console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`)
  },
}
 
const me = Object.create(person)
 
me.name = 'Matthew'
me.isHuman = true
 
me.printIntroduction()
// Expected output: "My name is Matthew. Am I human? true"
in this article
back to top