在getNameFunc这层的时候this是指向当前对象的,但是你进到return 的时候 你返回的是个function,已经不在上下文中了,是个匿名块了,this就不是myObject了。关于this,其实理解起来比较复杂,不同的情况下指向都不一样。你可以找找相关的文章看看。
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function () {
console.log(this.name);//这个时候还是My Object
return function () {
return this.name; //这个时候this 是window对象了。
};
}
};
alert(object.getNameFunc()());
//如果还想用myObject 在return 定义的函数里可以用赋值的方式:
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function () {
console.log(this.name);//这个时候还是My Object
that = this;
return function () {
//这样输出的就是myObject了。
return that.name; //这个时候this 是window对象了。
};
}
};
alert(object.getNameFunc()());