var name = "window";
var object = {
name: "My Object",
getNameFunc: function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //"window"var name = "window";
var object = {
name: "My Object",
getNameFunc: function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()()); //My Obect先来个经典的例子,首先那个第一个this是怎么变成全局对象的?在JS高级程序设计中这样解释:每个函数在被调用时,其活动对象都会自动取得两个特殊变量:this 和 arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中这两个变量。只会搜索到活动对象这个是明白的,再往下就不懂了。。。
1 回答
已采纳

木子舟义
TA贡献33条经验 获得超4个赞
每一个没有用 someobject.somefunc() 这样调用的函数里的this都是window..
你的代码中object.getNameFunc() 指向的是里面的一个匿名函数。因为用的someobject.somefunc()这种方式调用 所以this 指向的是object。然而在这个函数里又返回了一个函数。而且这个函数并没有用someobject.somefunc()这种方式调用。所以它里面的this指向window
不理解可以再问
添加回答
举报
0/150
提交
取消