首先:
var A={x1:1,x2:this.x1};alert(A.x2);输出undefined
然后:
var A={x1:1,x2:function(){alert(this.x1)}};A.x2();输出1
为什么在A中定义一个函数就有this了?

解决方案 »

  1.   

    this总是指向调用它的对象第一个,var A,其实就是window.A,此时的this,指向的是window,window里面是没有x1这个变量的第二个,建立了一个函数,由A.x2去调用,也就是说,这时候this是指向A了
      

  2.   

    楼上说的没有错,你可以这样理解,第一句定义是在定义A时,A都没定义完,何来this
    。第二句是在运行时