var name = "The Window";  var object = {
    name : "My Object",    getNameFunc : function(){
      return function(){
        return this.name;
      };    }  };  alert(object.getNameFunc()());为什么结果是The Window ?谢谢

解决方案 »

  1.   

    这里返回了一个函数
    类似
    var ret = function() {
        return this.name;
    }
    alert(ret());可以闭包实现你期望的结果
    var name = "The Window";var object = {
    name : "My Object",
    getNameFunc : function(){
    var self = this;
    return function(){
    return self.name;
    }; }};alert(object.getNameFunc()()); 
      

  2.   

    作用域问题,你可以这样想一下:
    好比这里是一个JAVA类,var name = "the window"是一个全局变量
    object是一个声明在某方法中的一个对象,这样就好理解了吧?而this.name就是指这个类中的name而并非object里的name。如果要取object中的name,直接用object.name就可以了。个人见解,错误之处请高人执政!
      

  3.   

    首先,从
    function(){
            return this.name;
          }; 
    这个函数开始,寻找属性name,不存在,则向其父对象作用域中寻找。仍然不存在,则再往父对象中寻找。此时的父对象为object,即object.name
    这里主要要明白,JavaScript中,作用域是Scope Chain。是逐层往上的。
      

  4.   


    <script>
    var name = "The Window";function a(){
     return this.name;
    }var object = {
      name : "My Object",
      getNameFunc : function(){   return a();   }};alert(object.getNameFunc()); 
    </script>
    这么写你再试试