this对象是在运行时基于函数的执行环境绑定的。在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。也就是说this关键字总是指代调用者。
var k = 10 ;
function test(){
this.k = 20 ;
}
//window.test();
window.test();
//alert(test.k); undefined
alert(k);
对于上述的代码片段,执行以下各测试代码运行结果:
alert(test.k); //undefined
因为this对象只会在运行的时候被绑定
test();
alert(test.k); //undefined
因为this被绑定的是调用这个函数的对象,也就是当前window
test();
alert(window.k); //20
alert(k); //20
实际上是覆盖了之前申明的全局变量a=10