Heim > Artikel > Web-Frontend > Dieser Mechanismus in JavaScript_Grundkenntnisse
JavaScript verfügt über einen eigenen Mechanismus. In verschiedenen Situationen ist die Ausrichtung unterschiedlich.
Globale Reichweite
console.log(this); //全局变量
Der globale Bereich verwendet dies, um auf globale Variablen zu verweisen, die ein Fenster in der Browserumgebung sind.
Hinweis: Der strikte Modus von ECMAScript5 verfügt über keine globalen Variablen und diese sind hier undefiniert.
Funktionsaufruf
function foo() { console.log(this); } foo(); //全局变量
Dieser Funktionsaufruf verweist auch auf globale Variablen.
Hinweis: Der strikte Modus von ECMAScript5 verfügt über keine globalen Variablen und diese sind hier undefiniert.
Objektmethodenaufruf
var test = { foo: function () { console.log(this); } } test.foo(); //test对象
Bei Objektmethodenaufrufen verweist dies auf den Aufrufer.
var test = { foo: function () { console.log(this); } } var test2 = test.foo; test2(); //全局变量
Aufgrund der späten Bindungsfunktion wird im obigen Beispiel jedoch auf die globale Variable verwiesen, was einem direkten Aufruf der Funktion entspricht.
Dies ist sehr wichtig. Das gleiche Codesegment kann nur ermittelt werden, wenn
ausgeführt wirdKonstrukteur
function Foo() { console.log(this); } new Foo(); //新创建的对象 console.log(foo);
Im Konstruktor verweist dies auf das neu erstellte Objekt.
Stellen Sie dies explizit ein
function foo(a, b) { console.log(this); } var bar = {}; foo.apply(bar, [1, 2]); //bar foo.call(1, 2); //Number对象
Bei Verwendung der Call- oder Apply-Methode von Function.prototype wird dieser innerhalb der Funktion als erster übergebener Parameter festgelegt.