JS中的this指向一直是個讓人頭疼的問題,想當初我學的是天昏地暗,查了好多資料,看的頭都大了,跟他大戰了那麼多回合,終於把它搞定個七八分,其實往往都是我們複雜化了,現在就讓大家輕鬆看懂this的指向,我會分以下幾種情況來說。
this的指向:
1、this 指的是調用當前方法(函數)的那個對象,也就是說函數在誰那被調用,this就指的是誰。
來看兩個栗子:
oBtn.onclick = function(){ alert(this); //oBtn } oBtn[i].onclick = fn1; function fn1(){ alert(this); //oBtn }很容易看出,函數是在按鈕對像被點擊的時候調用,所以this指的是obtn,這兩種情況是等同的是,只是調用函數的寫法不同。
2 當函數里面嵌套函數的時候,嵌套的那個函數里面的this指的是window,不要過分深究這個原因,因為這是JS的一個特性。
來看個栗子:
oBtn.onclick = function(){ alert(this); //oBtn(記得這裡還是oBtn) fn1(); } function fn1(){ alert(this); // window }3 、對於上述情況,當我們需要fn1裡面的this指向按鈕的時候怎麼辦呢,這個時候有兩種方法。
1) 將this作為參數傳函數去
2) 將this保存起來賦給另一個變量
來看兩個栗子:
oBtn.onclick = function(){ alert(this); //oBtn fn1(this); 1 將上面的this作為參數傳函數去} function fn1(obj){ alert(obj); // oBtn } var that = null;oBtn[i].onclick = function(){ alert(this); //oBtn that = this ;// 將上面的this保存起來賦給另一個變量fn1();}function fn1(){ alert(that); // 指向oBtn}OK,this的指向,最基礎的也就這幾種,很多複雜的也是由基礎演變的。有沒有輕鬆掌握呢。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。