this

<script> 
var point={
  x:10,
  y:20,
  moveTo:function(x,y){
     var moveX =function(x){
        this.x =x;//this 指window
     }
     var moveY =function(y){
        this.y =y;
     }
     moveX(x);
     moveY(y);
  }
 }
 point.moveTo(100,200);
 alert(point.x);
 alert(point.y);
 alert(x);
 alert(y);
</script>

解析:
 对于内部函数,即声明在另外一个函数体内的函数,这种绑定到全局对象的方式会产生另外一个问题。以 point 对象为例,这次我们希望在 moveTo 方法内定义两个函数,分别将 x,y 坐标进行平移。结果可能出乎大家意料,不仅 point 对象没有移动,反而多出两个全局变量 x,y。

你可能感兴趣的:(this)