J'ai vu le deuxième environnement d'utilisation lorsque le maître l'a introduit, le texte original est ici :
http://www.ruanyifeng.com/blo...
L'objet ici devrait être ceci ? Si oui, pourquoi est-ce le moins congruent ?
function test(){
console.log(this.x);
}
var o = {};
o.x = 1;
o.m = test;
console.log(o.m());
console.log(o===this);
Les sorties sont :
1
faux
This===fenêtre en vue globale
Lorsque console.log() est exécuté dans l'environnement global, cela pointe bien sûr vers la fenêtre
;cela pointe vers l'environnement d'exécution actuel de la fonction
o.m() lie implicitement ceci à l'objet o
Dans la portée globale, cela pointe vers l'objet global
N'oubliez pas qu'il existe une autre méthode d'appel func.call(context, x, m). Les deux méthodes ci-dessus ne sont que du sucre syntaxique. Vous pouvez utiliser la méthode "code de conversion" telle que :
.équivaut à
Logiquement parlant, l'imprimé ceci devrait être indéfini
Mais il y a une règle dans le navigateur :
Si le contexte que vous transmettez est nul ou indéfini, alors l'objet window est le contexte par défaut (le contexte par défaut en mode strict est indéfini)
Donc, ceci ci-dessus devrait correspondre à window.