最近在学javascript .闭包有点疑惑。 引用一个例子说明下。
 
  var name="window";
  var object={      name:"my object";
      getNameFunc:function(){
   
        return funtion(){
   
          retutn this.name;
       } 
   };}alter(object.getNameFun()());  假设现在在返回 this.name 其值一定是“ my object;”
如果在function 函数在调用 function()  返回this.name  实际上返回的是 this.name.name  或((object.name).name) 但是这个name属性可以说是不存在的或是未定义的。 但是就是不明白怎么回事 “window”;按照继承的观点也是首先继承 其父类 “My object” ;

解决方案 »

  1.   

    this指向的是调用该方法的对象。
      

  2.   

    alert(object.getNameFun()());==>alert(function(){return this.name}());==>alert(this.name);没研究过,随便猜的 -_-b
      

  3.   

      name="window "属性/值根本不在object对象作用域内。
      

  4.   

    this指向的是调用该方法的对象。
      

  5.   

    楼主的代码 错误好多<script type="text/javascript"> var name="window1";
    var object={
    name:"my object",
    getNameFunc:function(){
    return function(){
    return this.name;
    }
    }
    }
    var object2={
    name:"my object2",
    getNameFunc:function(){
    var This=this;
    return (function(){
    return This.name;
    })()
    }
    }alert(object.getNameFunc()());//object.getNameFunc()只是返回匿名函数 尚未执行  他的执行者 实际上是window     弹出 window1alert(object.getNameFunc().apply(object)) //调用apply 让object类调用匿名函数 则弹出 my objectalert(object2.getNameFunc()) //弹出 my object2   注意this在各层的使用
    </script>
      

  6.   

    http://blog.csdn.net/a569171010/article/details/7484461
      

  7.   

    http://blog.csdn.net/a569171010/article/details/7484461 这里面很清楚
      

  8.   

    继承和闭包是两回事,5楼的解释比较详细。楼主主要纠结的是函数中this的使用吧!
      

  9.   

     请问下object.getNameFunc()()函数实际未执行的原因。  
      

  10.   

    感谢2F&5F。这其实是一个学习闭包的绝佳例子。2F举例不错。。