javascript中,一個js中的函數,第一句var _this = this;為什么要這樣做?


javascript中,一個js中的函數,第一句var _this = this;為什么要這樣做? 下面是源碼:

 

 1 下面這段代碼是常用的網站首頁,自動切換span或者tabbar來變更List顯示內容的關鍵方法:
 2 function scrollDoor(){
 3 }
 4 scrollDoor.prototype = {
 5 sd : function(menus,divs,openClass,closeClass){
 6 var _this = this; //大家看清楚了,在這里,為什么不直接用this,要用_this代替后面的所有this,這有什么特殊的意義嗎?如果用了this會怎么樣?一共2個問題哈!
 7 if(menus.length != divs.length)
 8 {
 9 alert("菜單層數量和內容層數量不一樣!");
10 return false;
11 } 
12 for(var i = 0 ; i < menus.length ; i++)
13 { 
14 _this.$(menus[i]).value = i; 
15 _this.$(menus[i]).onmouseover = function(){
16 
17 for(var j = 0 ; j < menus.length ; j++)
18 { 
19 _this.$(menus[j]).className = closeClass;
20 _this.$(divs[j]).style.display = "none";
21 }
22 _this.$(menus[this.value]).className = openClass; 
23 _this.$(divs[this.value]).style.display = "block"; 
24 }
25 }
26 },
27 $ : function(oid){
28 if(typeof(oid) == "string")
29 return document.getElementById(oid);
30 return oid;
31 }
32 }

 

問題一:
不知道樓主有沒有接觸過jquery jquery里邊有一個特別典型的例子能說明用_this的作用
$("#btn").click(function(){
    var _this = this;//這里this和_this都代表了"#btn"這個對象
    $(".tr").each(function(){
          this;//在這里this代表的是每個遍歷到的".tr"對象
          _this;//仍代表"#btn"對象
    })
})
這種情況就是在一個代碼片段里this有可能代表不同的對象,而編碼者希望_this代表最初的對象
問題2:
其實並沒有全部使用_this
但是據我所看,應該沒有任何區別的,樓主的代碼里用_this可能只是為了編碼規范吧
你給的例子給了我很好的啟發,因為JS可以多層嵌套代碼,可能下面還可以再嵌一個方法,引用this就會變成子方法控制的對象,如果需要上級的對像,在沒有參數的情況下,前面前提做了一個臨時變量_this,可以保存上級對像,子方法中就可以用_this來調用了,這才是目的。

     也許正如你所說的,我的那個方法中,后面並沒有再次嵌套子方法,那可能只是為了編碼規范。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM