<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。