<script type="text/javascript">
     var name = "The Window";    var object = {
    name : "My Object",    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
   };
    alert(object.getNameFunc()());  //执行后的结果为:The Window
    </script>   请教高手执行后的结果为什么会是The Window?

解决方案 »

  1.   

    楼上正解.不过我详细给你说明下好了
      var name = "The Window";     var object = { 
        name : "My Object",     getNameFunc : function(){ 
          return function(){   //如果这里直接return this.name,那得到这个return的handle是object//对象,名字就是"My Object",但是你return了个function,所以下面调用的时候相当于是
    //执行了window.getNameFunc()(),这里传入进去this就变成window的name对象,也就是全局变量
    //"The Window.
            return this.name; 
          }; 
        } 
       }; 
        alert(object.getNameFunc()());  //执行后的结果为:The Window 
      

  2.   

    多谢高手的指教,csdn上的牛人真多!
      

  3.   

       var name="The Window";   var object = {
        name : "My Object",    getNameFunc : function(){
          return function(){
            return this.name;
          };
        }
       };
         2楼的,可不可以将object.getNameFunc()();分以下两步来执行:
          第一步:var tempVar = object.getNameFunc();//tempVar指向getNameFunc()方法返回的函数
          第二步:var result = tempVar();//此处执行tempVar()函数是在全局作用域里进行的,所以this.name就指向了全局作用域的name,而不是object中的name。
        </script>