Především je třeba říci, že smysl tohoto nelze určit, když je funkce definována, teprve při jejím vykonání lze určit, na koho tato funkce ukazuje, ve skutečnosti je konečným bodem objekt, který ji volá (s touto větou jsou určité problémy a později bude vysvětleno, proč problém existuje, i když většina článků na internetu to uvádí, i když v mnoha případech s tímto pochopením problém nebude, ve skutečnosti je toto chápání nepřesné, Takže až to pochopíte, budete mít pocit nepochopení), takže se této problematice budu věnovat podrobněji.
Test je následující:
To má různé hodnoty pro různé účely funkcí. Obecně je to objekt prostředí, ve kterém funkce běží. Použití tohoto principu je podrobně rozebráno ve čtyřech situacích.
Případ 1: Čistá volání funkcí
Toto je nejběžnější použití funkce a jedná se o globální volání, takže představuje globální objekt. Podívejte se na kód níže, běží s výsledkem 1.
Případ 2: Metoda volání jako objektu
Funkce může být také nazývána metodou objektu, v takovém případě odkazuje na nadřazený objekt.
Případ 3 Volání jako konstruktor
Takzvaný konstruktor znamená, že prostřednictvím této funkce lze generovat nový objekt. V tuto chvíli se jedná o tento nový objekt.
Výsledek běhu je 1. Abychom ukázali, že v tuto chvíli nejde o globální objekt, provedeme několik změn v kódu:
Výsledek běhu je 2, což znamená, že hodnota globální proměnné x se vůbec nezměnila.
Případ 4 aplikovat volání
apply() je metoda funkce, která mění volající objekt funkce. Jeho první parametr představuje změněný objekt, který volá funkci. Proto se to vztahuje k tomuto prvnímu parametru.
Když je parametr apply() prázdný, globální objekt je volán ve výchozím nastavení. Výsledkem běhu je tedy 0, což dokazuje, že se jedná o globální objekt.
Pokud změníte poslední řádek kódu na
Běžící výsledek se změní na 1, což dokazuje, že to představuje objektový objekt.
(Konec)
Odkaz:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
|