javascript - Des questions sur le contexte, c'est-à-dire à quoi cela renvoie-t-il?
某草草
某草草 2017-07-05 10:56:18
0
5
911

Allez directement au code :

var test = {
  outer: function () {
    // 此时this指向test对象
    console.log(this);
    
    function inner() {
      // 此时this指向window
      console.log(this);
    }
    inner();
  }
}

Quelle est la raison pour laquelle ce point du code ci-dessus est différent ?

Je comprends très bien maintenant, donnez-moi une réponse s'il vous plaît !

某草草
某草草

répondre à tous(5)
大家讲道理

En excluant les emprunts de fonctions et les fonctions de constructeur, il n'en reste que deux types, l'un est une fonction ordinaire et l'autre est une méthode objet.

Les méthodes d'objet pointent vers l'objet, les fonctions ordinaires pointent vers le global

曾经蜡笔没有小新

Celui qui appelle cette fonction, alors thisindique qui.

Le pointage de

this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test est uniquement lié à la façon dont vous appelez cette fonction. Par exemple, si vous dites que le premier

pointe vers test, ce n'est pas nécessairement vrai. Il existe des moyens de modifier le pointage de. 🎜. Ce n'est que lorsque vous exécutez test.outer() que le premier 🎜 pointe vers test. 🎜
Ty80

/a/11...

女神的闺蜜爱上我

Il s'agit d'un problème de fermeture. Lorsqu'un objet se voit attribuer des attributs via des littéraux d'objet, y compris une méthode de fonction, cette méthode de fonction a une sortie de console, puis une fonction est déclarée dans cette fonction, un problème de fermeture se forme. Fermeture Dans des circonstances normales. , cela pointe vers la fenêtre. Dans des circonstances particulières, vous pouvez modifier la valeur de ceci. Vous pouvez lire un article que j'ai écrit sur la fermeture des paquets. Vous obtiendrez des informations sur les inconvénients du téléphone mobile.

巴扎黑

En fait, ce n’est pas bien de répondre anonymement ! La fonction définie à l'intérieur de la fonction dans l'objet ne peut pas obtenir directement la variable d'environnement de niveau supérieur, encore moins celle-ci à l'intérieur. Vous devez définir une variable pour elle, telle que var that=this de cette manière, vous pouvez obtenir le supérieur-; niveler cet objet ;
var test = {

    outer: function () {
        // 此时this指向test对象
        var that=this
        console.log(this);

        function inner() {
            // 此时this指向window
            console.log(that);
        }
        inner();
    }
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal