Först och främst måste det sägas att poängen med detta inte kan bestämmas när funktionen definieras, endast när funktionen utförs kan man avgöra vem detta pekar på, faktiskt är den slutliga punkten objektet som anropar den (det finns vissa problem med denna mening, och det kommer att förklaras senare varför det finns ett problem, även om de flesta artiklar på internet säger detta, även om det i många fall inte finns något problem med den förståelsen, men i själva verket är den förståelsen felaktig, Så när du förstår detta kommer du att känna dig oförstående), så jag kommer att utforska detta ämne på djupet.
Testet är följande:
Detta har olika värden för olika funktioners syften. Generellt är detta miljöobjektet där funktionen körs. Användningen av detta diskuteras i detalj i fyra situationer.
Fall 1: Rena funktionsanrop
Detta är den vanligaste användningen av en funktion, och det är ett globalt anrop, så detta representerar ett globalt objekt. Titta på koden nedan, den körs med resultatet 1.
Fall 2: Anrop som objektmetod
Funktionen kan också kallas en metod för ett objekt, i vilket fall detta syftar på föräldraobjektet.
Fall 3 Anrop som konstruktör
Den så kallade konstruktören är genom denna funktion som kan genereras ett nytt objekt. Vid denna punkt syftar detta på detta nya objekt.
Resultatet av runen är 1. För att visa att detta inte är ett globalt objekt just nu gör vi några ändringar i koden:
Resultatet av körningen är 2, vilket indikerar att värdet på den globala variabeln x inte har ändrats alls.
Fall 4 ansökningssamtal
apply() är en metod för en funktion som ändrar det anropande objektet för funktionen. Dess första parameter representerar det ändrade objektet som anropar funktionen. Därför syftar detta på denna första parameter.
När apply()-parametern är tom anropas det globala objektet som standard. Därför är resultatet av körningen 0, vilket bevisar att detta avser det globala objektet.
Om du ändrar sista kodraden till
Det löpande resultatet blir 1, vilket bevisar att detta representerar objektet obj.
(Slut)
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
|