var name = "The Window";  var object = {    name : "My Object",    getNameFunc : function(){      return function(){        return this.name;      };    }  };  alert(object.getNameFunc()());

解决方案 »

  1.   

    根据JavaScript中this的定义。    
    getNameFunc : function(){
    //getNameFunc是object的一个方法,这里的this指向object对象
          return function(){
    //js有变量声明和函数声明提升,这里的匿名函数提升到object后面,只是在getNameFunc中调用,所以this指向window,而var name = "The Window";实则是window.name = "The Window";
            return this.name;      };    }
      

  2.   

    ;object.getNameFunc()返回的函数是一个匿名函数先叫它a函数吧。
    执行object.getNameFunc()()时,a函数的调用方式是直接调用而不是作为object的属性调用的,所以它的this指向的是全局对象window(严格模式是undefined)。想要指向object改成箭头函数return ()=>this.name;就可以了