javascript关于this对象,在闭包函数中为什么会引用全局变量
阿神
阿神 2017-04-11 13:28:38
0
14
1325

阿神
阿神

闭关修行中......

répondre à tous(14)
Ty80

JavaScript语言精粹说 这是一个设计缺陷

洪涛

@eyesofkids 的答案已经很完善了,建议采纳。

===========================================
                   下面是老答案
===========================================

再来补充一种方式,通过 call 改变 this的方向,return function(){} 中还可以用 this。

var name = "aa";
var object = {
    name : "bb",
    getNameFunc : function(){
        return (function(){
            return this.name;
        }).call(this);
    }

};

alert(object.getNameFunc());
伊谢尔伦

this是在运行时绑定的。

你这里调用对象的方法,最后返回一个函数,返回的函数是在全局作用域执行的,并且没有其他对象调用返回的函数,也没有使用new,call,apply,bind调用返回的函数。this在非严格模式下就指向window/global,在严格模式下就指向undefined

Peter_Zhu

要么把对象本地化(放在外部的函数内)要么把对象(this)传到返回的函数内

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