Allereerst moet worden gezegd dat het punt hiervan niet kan worden bepaald wanneer de functie wordt gedefinieerd; alleen wanneer de functie wordt uitgevoerd, kan worden bepaald naar wie dit wijst; in feite is het laatste punt hiervan het object dat het aanroept (er zijn enkele problemen met deze zin, en later zal worden uitgelegd waarom er een probleem is, hoewel de meeste artikelen op internet dit zeggen, hoewel er in veel gevallen geen probleem zal zijn met dat begrip, maar in feite is dat begrip onnauwkeurig, Dus als je dit begrijpt, zul je een gevoel van onbegrip hebben), dus ik zal dit onderwerp diepgaand onderzoeken.
De test is als volgt:
Dit heeft verschillende waarden voor verschillende doeleinden van functies. In het algemeen is dit het omgevingsobject waarin de functie draait. Het gebruik hiervan wordt in vier situaties uitvoerig besproken.
Geval 1: Zuivere functieaanroepen
Dit is het meest voorkomende gebruik van een functie, en het is een globale aanroep, dus dit vertegenwoordigt een globaal object. Kijk naar de onderstaande code, het draait met een resultaat van 1.
Geval 2: Aanroepen als objectmethode
De functie kan ook worden aangeroepen als een methode van een object, in welk geval dit verwijst naar het ouderobject.
Geval 3 Call als constructor
De zogenaamde constructor is dat via deze functie een nieuw object kan worden gegenereerd. Op dit punt verwijst dit naar dit nieuwe object.
Het resultaat van de run is 1. Om aan te tonen dat dit op dit moment geen globaal object is, brengen we enkele wijzigingen aan in de code:
Het resultaat van de run is 2, wat aangeeft dat de waarde van de globale variabele x helemaal niet is veranderd.
Case 4 toepassing oproep
apply() is een methode van een functie die het aanroepende object van de functie verandert. De eerste parameter vertegenwoordigt het gewijzigde object dat de functie aanroept. Dit verwijst dus naar deze eerste parameter.
Wanneer de apply()-parameter leeg is, wordt het globale object standaard aangeroepen. Daarom is het resultaat van de run 0, wat bewijst dat dit verwijst naar het globale object.
Als je de laatste regel code verandert naar
Het lopende resultaat wordt 1, wat bewijst dat dit het object obj vertegenwoordigt.
(Einde)
Referentie:
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
|