跪求高手帮帮忙

runzili 2011-05-25 02:12:50
最近学习闭包时,对下面这段代码最后弹出 The Window 不是很明白,哪位高手详细指引下呗? 
var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
toury 2011-05-25
  • 打赏
  • 举报
回复
1楼正解。
这个例题迷惑人之处在于最后的那对括号():
alert(object.getNameFunc()()
你可以把那对括号去掉,再测试一下。结果应该是没执行的匿名函数的结构体本身:
return function(){
return this.name;
};
runzili 2011-05-25
  • 打赏
  • 举报
回复
多谢!明白着。
Javascripters 2011-05-25
  • 打赏
  • 举报
回复
object.getNameFunc()的执行返回一个匿名函数function(){return this.name;},
object.getNameFunc()()的执行就是执行匿名函数,也就是(function(){return this.name;})()。
结合this永远指向调用者,如果没有调用者则指向window的经典台词。故该this指向window。
window.name显然就是"The Window"。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧