Maison  >  Questions et réponses  >  le corps du texte

javascript - Des questions sur le contexte, c'est-à-dire à quoi cela renvoie-t-il?

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 !

某草草某草草2662 Il y a quelques jours861

répondre à tous(5)je répondrai

  • 大家讲道理

    大家讲道理2017-07-05 10:58:18

    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

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 10:58:18

    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. 🎜

    répondre
    0
  • PHP中文网

    PHP中文网2017-07-05 10:58:18

    /a/11...

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:58:18

    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.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-07-05 10:58:18

    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();
        }
    }

    répondre
    0
  • Annulerrépondre