Najprej je treba povedati, da točke tega ni mogoče določiti, ko je funkcija definirana, šele ko je funkcija izvedena, lahko določimo, na koga to kaže; pravzaprav je zadnja točka tega objekt, ki jo kliče (s to povedjo so nekatere težave, in kasneje bo pojasnjeno, zakaj obstaja težava, čeprav večina člankov na internetu to pravi, čeprav v mnogih primerih s tem razumevanjem ne bo težav, a v resnici je to razumevanje netočno, Ko boste to razumeli, boste imeli občutek nerazumevanja), zato bom to vprašanje podrobno raziskal.
Test je naslednji:
Ta ima različne vrednosti za različne namene funkcij. Na splošno je to objekt okolja, v katerem se funkcija izvaja. Uporaba tega je podrobno obravnavana v štirih primerih.
Primer 1: Čisti klici funkcij
To je najpogostejša uporaba funkcije in gre za globalni klic, zato predstavlja globalni objekt. Poglejte spodnjo kodo, deluje z rezultatom 1.
Primer 2: Metoda klica kot objekta
Funkcijo lahko imenujemo tudi kot metodo objekta, v tem primeru se nanaša na nadrejen objekt.
Primer 3 Klic kot konstruktor
Tako imenovani konstruktor je, da se s to funkcijo lahko generira nov objekt. V tem trenutku se to nanaša na ta nov predmet.
Rezultat teka je 1. Da pokažemo, da to trenutno ni globalni objekt, naredimo nekaj sprememb v kodi:
Rezultat zaporedja je 2, kar pomeni, da se vrednost globalne spremenljivke x sploh ni spremenila.
Primer 4: uporabi klic
apply() je metoda funkcije, ki spremeni klicni objekt funkcije. Njegov prvi parameter predstavlja spremenjeni objekt, ki kliče funkcijo. Zato se to nanaša na ta prvi parameter.
Ko je parameter apply() prazen, se privzeto pokliče globalni objekt. Zato je rezultat zaporedja 0, kar dokazuje, da se nanaša na globalni objekt.
Če zadnjo vrstico kode spremenite v
Trenutni rezultat postane 1, kar dokazuje, da predstavlja objektni objekt.
(Konec)
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
|