最近在看JAVASCRIPT权威指南5
第143页讲作为方法的函数,this有3种指向
1 当一个函数作为方法调用时,this指向掉用该方法的对象
2 当一个函数作为函数调用的时候,this指向全局对象
3当一个嵌套的函数(作为函数)在一个包含的函数之中调用,而这个包含的函数是作为方法调用的,这也是成立的:this关键字在包含的函数中有一个值,但他却(不太直观地)引用嵌套的函数体的内部的全局对象.
前2个都简单,
第3个情况,不明白,而且我自己也举不出例子来,第3种情况我是完全抄写的书上的,有没有高手来解答下,最好举个例子,形象点!!!!

解决方案 »

  1.   

    如果你有面向对象的基础就能理解了!在面向对象里有一个隐名内部类,里面的this和第3个情况是一样的!
    javascript的设计虽然不是很严格的符合面向对象的定义,但大部分还是以对象为基础的
      

  2.   

    就是闭包
    function f(){
      alert(this);//这个this就是第一种情况
      function g(){
        alert(this);//第三种情况,和前面的this不是同一个值,相当于第二种情况
      }
      var obj=new Object();
      obj.h = function(){
        alert(this);//第三种情况,this是obj,相当于第一种情况
      }
      g();
      obj.h();
    }
    简单的说,一个函数内的this和其内嵌的函数内的this是不同意义的