Heim > Web-Frontend > js-Tutorial > Hauptteil

Verstehen Sie das Schlüsselwort this in JS genau

迷茫
Freigeben: 2017-03-26 17:44:23
Original
1461 Leute haben es durchsucht

Nachdem ich die Verteidigung meines Masterstudiums abgeschlossen hatte, begann ich weiter hart an einer beruflichen Veränderung zu arbeiten. Xiaobai wird kämpfen, komm schon. Dieser Artikel ist ein Zitat aus der JS-Kernserie: Eine kurze Diskussion des Funktionsumfangs.

In einer Funktion zeigt dies immer auf das Besitzerobjekt der aktuellen Funktion. Der spezifische Punkt davon kann nur zur Laufzeit bestimmt werden und sein aufrufendes Objekt kann nur bekannt sein.

window.name = "window";
function f(){
    console.log(this.name);
}
f();//输出window

var obj = {name:'obj'};
f.call(obj); //输出obj
Nach dem Login kopieren

Wenn f() ausgeführt wird, ist der Aufrufer von f() das Fensterobjekt, daher wird „window“ ausgegeben.

f.call(obj) dient dazu, f() für das obj-Objekt auszuführen, was obj.f() entspricht. Zu diesem Zeitpunkt ist dies in f obj, daher ist die Ausgabe „obj“. .

code1:

var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        return function(){
            return this.foo;
        };
    }
};
var f = obj.getFoo();
console.log(1+":"+f()); //输出window
Nach dem Login kopieren

code2:

var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        var that = this;
        return function(){
            return that.foo;
        };
    }
};
var f = obj.getFoo();
console.log(f()); //输出obj
Nach dem Login kopieren

code1:
Das Ausführen von var f = obj.getFoo() gibt eine anonyme Funktion zurück, ganz in:
var f = function(){
return this.foo;
}
f() ist äquivalent zu window.f(), also zeigt this in f auf das Fensterobjekt, this .foo ist äquivalent zu window.foo, also gibt f() „window“ zurück

code2:
Das Ausführen von var f = obj.getFoo() gibt auch eine anonyme Funktion zurück, das heißt:
var f = function (){
return that.foo;
}
Der einzige Unterschied besteht darin, dass this in f that wird. Bevor Sie wissen, welches Objekt das ist, bestimmen Sie zunächst die Gültigkeitsbereichskette von f: f-> ;getFoo ->window und suchen Sie danach in der Kette. Zu diesem Zeitpunkt können Sie feststellen, dass dies in getFoo darauf verweist, und dass dies in getFoo auf den Aufrufer seiner Laufzeit verweist. Dies ist aus var f = obj.getFoo ersichtlich () Zu diesem Zeitpunkt zeigt dies auf das obj-Objekt, sodass.foo äquivalent zu obj.foo ist, sodass f() „obj“ zurückgibt.

Studenten, die sich über die Scope-Kette nicht im Klaren sind, können sich auf JavaScript von Scope bis Abschluss beziehen.

Das obige ist der detaillierte Inhalt vonVerstehen Sie das Schlüsselwort this in JS genau. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!