Maison >interface Web >js tutoriel >Ce mécanisme dans les connaissances JavaScript_Basic
JavaScript a son propre mécanisme. Dans différentes situations, le pointage est différent.
Portée mondiale
console.log(this); //全局变量
La portée globale l'utilise pour pointer vers des variables globales, qui sont une fenêtre dans l'environnement du navigateur.
Remarque : le mode strict d'ECMAScript5 n'a pas de variables globales, et ceci n'est pas défini ici.
Appel de fonction
function foo() { console.log(this); } foo(); //全局变量
Cela dans les appels de fonction pointe également vers des variables globales.
Remarque : le mode strict d'ECMAScript5 n'a pas de variables globales, et ceci n'est pas défini ici.
Appel de méthode objet
var test = { foo: function () { console.log(this); } } test.foo(); //test对象
Dans les appels de méthode objet, cela pointe vers l'appelant.
var test = { foo: function () { console.log(this); } } var test2 = test.foo; test2(); //全局变量
Cependant, en raison de la fonctionnalité de liaison tardive de ceci, dans l'exemple ci-dessus, cela pointera vers la variable globale, ce qui équivaut à appeler directement la fonction.
Ceci est très important. Le même segment de code ne peut être déterminé que lors de l'exécution
Constructeur
function Foo() { console.log(this); } new Foo(); //新创建的对象 console.log(foo);
À l'intérieur du constructeur, cela pointe vers l'objet nouvellement créé.
Définissez ceci explicitement
function foo(a, b) { console.log(this); } var bar = {}; foo.apply(bar, [1, 2]); //bar foo.call(1, 2); //Number对象
Lors de l'utilisation de la méthode call ou apply de Function.prototype, ceci à l'intérieur de la fonction sera défini comme premier paramètre transmis.