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

來源:互聯網
上載者:User

標籤:有一個   情況下   block   菜單   his   區別   use   調用   遍曆   

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;為什麼要這樣做?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.