第一段:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());
这段代码的输出结果是:The Window
结果分析:通过输出结果可以明白,这里的this代表的全局对象,object.getNameFunc()执行后得到的结果是
function(){
return this.name;
};
那么
object.getNameFunc()()
就相当于一个全局的匿名函数在执行,那么这个this当前指向全局对象,全局对象访问的name是The Window
function(){
return this.name;
}();
第二段:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
console.log(that);
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());
这段代码的输出结果是:My Object
结果分析:按照上面的分析,很好理解了,object.getNameFunc()执行之后this指向的是object,
var that = this;
相当于用一个变量that引用了,这个this,也指向object,最后that.name是object的name。