DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 聊一聊JS中this的指向問題
聊一聊JS中this的指向問題
編輯:關於JavaScript     

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的指向,最基礎的也就這幾種,很多復雜的也是由基礎演變的。有沒有輕松掌握呢。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved