JS中一个闭包问题。不理解最后的输出结果。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());
此处的getNameFunc()是作为object对象的一个方法被调用的对吗?
如果是的话,那么this即被绑定到了object对象了的是吧?
那么为什么return this.name时,输出全局变量'The Window'而不是object中的name属性值'My Object'呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这不应该算是闭包问题,而是this的指向问题……
每个函数(含嵌套函数)都有自己的this和arguments,内函数的this和arguments不等于外函数的this和arguments,这在犀牛书函数一章有讲,至于为什么没说……
内部函数引用外部的this,需要在外部函数中设置局部变量,如self=this,arguments相同……利用闭包,内部函数可以调用外部函数的变量而获取外部函数的调用对象this
内部函数的this就是全局变量window,在严格模式下好像是undefined
这个是
this
指向有问题了,这个this
指向的是匿名函数返回值改成
或
这是 js 设计的一个问题。this会查找到上一层函数作用域。在es5里, 如果未能在上一层作用域查找到,则会去全局作用域查找