当前位置: 代码迷 >> JavaScript >> 求指导一个关于闭包的有关问题
  详细解决方案

求指导一个关于闭包的有关问题

热度:55   发布时间:2013-10-22 16:17:03.0
求指导一个关于闭包的问题
var name = "the window";
var object = function (){
        this.name = "My object";
this.getNameFunc = function(){
return function (){
alert(this.name);
return this.name;
};
}
};

var aa = new object();
alert(aa.getNameFunc()());

我得倒的结果是两条the window,请问这内在原理是怎么回事啊,新手。 
JS闭包

------解决方案--------------------

var name = "the window";
var object = function (){
    this.name = "My object";
    this.getNameFunc = function(){
        return function (){
            alert(this.name);
            return this.name;
        };
    }
};

var aa = new object();
var bb = aa.getNameFunc();
//getNameFunc返回的是一个匿名function,也就是说:
bb = function (){
   alert(this.name);
   return this.name;
};
var cc = bb();
//这时,bb内部的this为window,因此alert的是window.name
//window.name被第一句var name给覆盖了,所以是"the window"
alert(cc);//alert(window.name);
  相关解决方案