Maison >interface Web >js tutoriel >Ce mécanisme dans les connaissances JavaScript_Basic

Ce mécanisme dans les connaissances JavaScript_Basic

WBOY
WBOYoriginal
2016-05-16 15:16:511242parcourir

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.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn