javascript - Signaler des problèmes à ce sujet
天蓬老师
天蓬老师 2017-06-28 09:25:33
0
5
768
var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        return function(){
            return this.foo;
        };
    }
};
var f = obj.getFoo();
console.log(f());  //结果:window

Pourquoi le résultat de la fenêtre d'exécution du code ci-dessus ?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(5)
滿天的星座

obj.getFoo() 返回一个方程,赋值给了 f 。
f 通过 f() 被调用,没有明确的调用者,所以 this 就是 window .

Si vous voulez obtenir "obj", vous pouvez le faire

var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        var self = this;
        return function(){
            return self.foo;
        };
    }
};

var f = obj.getFoo();
console.log(f());
阿神

Parce que, en f()实际运行的地方,thiswindow,由于没有通过call或者bind改变上下文,所以输出的就是window.

Vous pouvez le remplacer comme suit :

console.log(f());
// ----->
console.log(obj.getFoo());
// ----->
console.log(function() {
    var self = this;
    return function() {
        return self.foo
    }
});

iciself就是指向window了,所以return self.foo就是return window.foo,也就是'window'.

淡淡烟草味

En fait, la compréhension la plus simple est que obj.getFoo donne f, puis regarde où cette méthode s'exécute.

f = function () {
    return function () {
        return this.foo
    }
}
曾经蜡笔没有小新

f() dans console.log(f()) est appelé indépendamment
1 Si la fonction appelante appartient à un objet, alors lorsque la fonction est appelée, l'interne this pointe vers l'objet.
2. Si la fonction est appelée indépendamment, alors celle-ci à l'intérieur de la fonction pointe vers indéfini.
Lecture recommandée http://www.jianshu.com/p/d647... J'espère que cela vous sera utile

Ty80

Exécution de la fonction, ceci dans le corps de la fonction pointe vers l'appelant de la fonction

1. Dans le code suivant, l'appelant de la fonction getFoo est obj, donc ceci à l'intérieur de la fonction getFoo pointe vers l'objet obj

var f = obj.getFoo()

2. La fonction getFoo renvoie une fonction anonyme et l'affecte à la variable f, puis exécute la fonction f A ce moment, la variable f est montée sur la fenêtre, et ce. à l'intérieur de la fonction f pointe également vers la fenêtre

console.log(f());  //结果:window
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!