javascript - Une question à ce sujet
给我你的怀抱
给我你的怀抱 2017-07-05 11:06:26
0
6
914

Comme le montre l'image, je voudrais demander à tout le monde, pourquoi le premier paramètre de la fenêtre foo.call() ?

给我你的怀抱
给我你的怀抱

répondre à tous(6)
女神的闺蜜爱上我

En fait, la clé du problème est que nous ne comprenons pas le rôle de la fonction call/apply. En termes officiels, cela signifie changer le contexte de portée, mais ici le contexte local est changé en fenêtre. En fait, appeler/appliquer est une méthode pour « tuer quelqu'un avec un couteau emprunté », c'est-à-dire que si vous n'avez pas un certain attribut ou une certaine méthode, et que vous souhaitez ensuite appeler les attributs ou les méthodes d'autres objets, c'est également une méthode d'implémentation de l'héritage d'objets.

小葫芦

En fait, il n'est pas nécessaire que ce soit Windows, et il est préférable d'utiliser call. Il vous suffit de déclarer var that=this dans f et d'écrire this de la fonction de fermeture comme ça. obtenez les variables d'environnement de la fonction supérieure. Vous ne pouvez qu'être venteux, donc la déclaration est ok. Si vous ne comprenez pas, vous pouvez me demander

.
滿天的星座

S'il s'agit d'un front-end, la fonction a un paramètre invisible this, qui pointe par défaut vers la fenêtre des variables globales.
Sauf si vous modifiez l'objet pointé par ceci, tel que foo.call (autres objets)
La phrase originale utilise ce paramètre par défaut
L'annotation indique clairement que cela pointe vers window

Je vais écrire quelques phrases supplémentaires, sinon je serai clair

var foo = function () {
  console.log(this.x);
}
foo();为什么this指向window呢

De plus, la sémantique de ceci est de pointer vers l'objet qui appelle cette fonction.
Chaque fonction nécessite un objet pour appeler
obj.f() signifie que f est appelé par obj
Si le front-end ne spécifie pas l'objet appelant, la valeur par défaut est la fenêtre de variable globale pour appeler la fonction

刘奇

Lorsque JavaScript est conçu, ceci dans la fonction interne (c'est-à-dire la fonction dans le corps de la fonction) sera lié à l'objet global (c'est-à-dire la fenêtre). Je pense que le commentaire ici foo.call(window) devrait simplement utiliser le langage js pour expliquer pourquoi this.x dans. foo() affichera 10.

曾经蜡笔没有小新

Il ne dit pas que le premier paramètre de foo.call doit être window. Le point principal de la question est de comprendre ce qu'est call.

https://developer.mozilla.org...

阿神

Vous pouvez comprendre les fonctions et les différences d'appel, d'application et de liaison

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal