最近学习闭包时,对下面这段代码最后弹出 The Window 不是很明白,哪位高手详细指引下呗? 
   var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());

解决方案 »

  1.   

    object.getNameFunc()的执行返回一个匿名函数function(){return this.name;},
    object.getNameFunc()()的执行就是执行匿名函数,也就是(function(){return this.name;})()。
    结合this永远指向调用者,如果没有调用者则指向window的经典台词。故该this指向window。
    window.name显然就是"The Window"。
      

  2.   

    1楼正解。
    这个例题迷惑人之处在于最后的那对括号():
    alert(object.getNameFunc()()  。
    你可以把那对括号去掉,再测试一下。结果应该是没执行的匿名函数的结构体本身:
      return function(){
          return this.name;
      };