1. 程式人生 > >javascript中,一個js中的函數,第一句var _this = this;為什麽要這樣做?

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

== .class 首頁 false turn prot his on() func

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來調用了,這才是目的。

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

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