下面將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/