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的指向,最基礎的也就這幾種,很多復雜的也是由基礎演變的。有沒有輕松掌握呢。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。