首頁  >  問答  >  主體

javascript关于this对象,在闭包函数中为什么会引用全局变量

阿神阿神2750 天前1191

全部回覆(14)我來回復

  • PHP中文网

    PHP中文网2017-04-11 13:30:38

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-11 13:30:38

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

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 13:30:38

    this是在运行时绑定的。

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

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-11 13:30:38

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

    回覆
    0
  • 取消回覆