下面将this的一些基本使用和大家分享一下:
查看this指向的一句话法则:
永远指向其所在函数的所有者如果没有所有者时,指向window。
理解this的要点:关键在于将函数与函数名分开看待。同一个函数,在不同的执行方法下,会有不同的效果。
如何来进行理解呢,来看几个实例
1)全局函数中的this指向
functiontest(){
alert(this);//test这个函数没有所有者,因此此时this指向的是window
}
2)对象方法中的this指向
o.test=function(){
alert(this==o);//输出true,o.test表示的是test这个函数的所有者是对象o,因此this应当是指向o的
}
3)绑定函数时的this 1
如下代码,test1和test2中this并不相同
vartest2=o.test1;//test2这个函数并没有所有者,在此,test2虽然调用了test1这个函数,但是this仍然指向window,而不是指向test1的拥有者:对象o
test2();
o.test1=function(){
alert(this===o);
}
这便是上面所说的,要将函数与函数名分开看待
4)绑定函数时的this 2
此时如果我们对3)中的代码进行一些修改:
ffunctiontest(){
alert(this===o);
}
test();//this指向window
varo={};
o.test2=test;
o.test2();//此时test2的所有者为o,而test没有所有者,this在此时指向的是o
alert(o.test2);
5)鼠标单击事件等进行函数的绑定时,this的指向
document.onclick=function(){
alert(this===document);//输出为true,onclick事件的拥有者是document。因此,此处this指向document。我们可以将document.onclick理解为一个对象方法,如同例4中的o.test2一样。
}
参考链接:http://blog.163.com/hongshaoguoguo@126/blog/static/18046981201251935720333/