Először is el kell mondani, hogy ennek a lényege nem határozható meg, amikor a függvényt definiáljuk, csak akkor lehet meghatározni, kire mutat ez, valójában a végső pont az a tárgy, amely hívja (ezzel a mondattal vannak problémák, és később elmagyarázzuk, miért van probléma, bár az interneten megjelenő cikkek többsége ezt mondja, bár sok esetben nem lesz probléma ezzel a megértéssel, de valójában ez a megértés pontatlan, Tehát amikor ezt megérted, megértetlenség érzése lesz), ezért ezt a kérdést mélyrehatóan fogom vizsgálni.
A teszt a következő:
Ennek különböző értékei vannak különböző funkciók esetén. Általánosságban ez az a környezeti objektum, amelyben a függvény fut. Ennek a használatát négy helyzetben részletesen tárgyaljuk.
1. eset: Tiszta függvényhívások
Ez a függvény leggyakoribb használata, és globális hívás, tehát ez egy globális objektumot képvisel. Nézd meg az alábbi kódot, az 1 eredményt kap.
2. eset: Objektumként hívó metódus
A függvényt objektum metódusként is nevezhetjük, ebben az esetben ez a szülőobjektumra utal.
3. eset: Hívás konstruktorként
Az úgynevezett konstruktor ezen a függvényen keresztül új objektum generálható. Ezen a ponton ez az új tárgyra utal.
A futás eredménye 1. Annak bizonyítására, hogy jelenleg nem globális objektum, néhány módosítást hajtunk végre a kódban:
A futás eredménye 2, ami azt jelzi, hogy a globális x változó értéke egyáltalán nem változott.
4. eset jelentkezz hívás
az apply() egy függvény metódusa, amely megváltoztatja a függvény hívó objektumát. Az első paramétere a függvényt megidéző megváltozott objektumot jelöli. Ezért ez erre az első paraméterre vonatkozik.
Amikor az apply() paraméter üres, a globális objektumot alapértelmezés szerint hívja. Ezért a futás eredménye 0, ami bizonyítja, hogy ez a globális objektumra vonatkozik.
Ha az utolsó kódsort megváltoztatod
A futó eredmény 1-es lesz, bizonyítva, hogy ez az objektumot képviseli, az obj.
(Vége)
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
|