Öröklődés "Object Masquerading" technikával

 

Kommentár

Ez egy példa arra, miért nem lehet ClassA konstruktor függvényt egyszerűen meghívni (nézd a forráskódot). Ebben az esetben nem jön létre "closure", így ClassA függvény nem látja a ClassB this tulajdonságát.

A ClassA meghívásakor egy új futási környezet jön létre, aminek a [[scope]] tulajdonsága megkapja a globális futási környezet láthatósági listáját
(Minden egyes függvény objektum rendelkezik egy [[scope]] nevű belső tulajdonsággal, mely az objektum létrehozásakor kap értéket attól függően, hogy az milyen környezetben jön létre. A function kulcsszóval definiált függvények esetében az őket létrehozó futási környezet láthatósági listája (scope chain) kerül bele. ).

Mikor a this azonosító feloldásra kerül a ClassA végrehajtásakor, a globális futási környezet láthatósági listájában kerül megtalálásra. A this globális változó a legtöbb böngészőtípusban (Internet Explorer és Opera böngészőkben teszteltem) referenciát tartalmaz a window objektumra vagy a globális objektumot (A globális objektum a globális futási környezetbe való belépés előtt keletkezik, és tuljdonságokként tartalmazza az összes beépített objektumot, függvényeket, valamint a befogadó környezet által nyújtott objektumokat.) tartalmazza.

A futási környezetről és az azonosítók feloldásáról további információk találhatók Hodicska Gergely "Objektum orientált JavaScript programozás a felszín alatt" című írásában a Weblabor oldalán.