物件導向的Javascript(4):重載

來源:互聯網
上載者:User
        在小項目中對於JavaScript使用,只要寫幾個function就行了。但在大型項目中,尤其是在開發追求 良好的使用者體驗的網站中,如SNS,就會 用到大量的JavaScrpt,有時JavaScript的工作量勝過了C#,這時寫一堆function,就會顯得很亂,雜亂無章,甚至會出現命名衝突,管理和維 護起來都很麻煩。對於這種情況我們就需要使用物件導向的思想來開發JavaScript。那我們就這樣作罷:

        在物件導向語言裡重載是很重要的一個特性,而JavaScript這個自稱物件導向的語言竟然沒有直接提供重載的功能。

假如 我這樣定義:                       

 function getDate(){.....} 
 function getDate(date){.....}

 那麼後一個方法將覆蓋前一個,雖然不報錯。

        但是我們確實是可以實現重載的,如果你用過jQuery,你就會深有體會,比如$("#btn").val() 是擷取id為"btn"的按鈕的value值,而$("#btn").val("點我")則是給id為"btn"的按鈕賦值。

        那麼JavaScript是怎麼實現(準確地講應該叫“類比”)的呢?。
        答案很簡單:arguments
        arguments是JavaScript裡的一個內建對象,包含了調用者傳遞的實際參數,但不局限於函式宣告所定義的參數列表,而調用時只它和數組一樣有個length屬性。 
   我們暫且把它當“數組”來理解吧,我們根據該數組的長度以及其元素的類型來選擇不同的實現,從而類比了重載。   
   具體請看下面的樣本:

function getDate(){
   if(arguments.length==0){ 
      var date=new Date().toLocaleDateString();
       return "您沒有輸入參數,現在時間:"+date ;
   }

   if(arguments.length==1){
      if(arguments[0].constructor ==Date){
       return "您輸入的參數是Date類型,現在時間是:"+arguments[0].toDateString();
      }
      if(arguments[0].constructor ==String){
       return "您輸入的參數是String類型,現在時間是:"+arguments[0];
      }
   }

}

於是我們可以這樣調用:getDate()
getDate(new Date())
getDate("星期一")

     這樣就實現了JavaScript的重載,不過我們發現這樣的“實現”實在是太勉強了,如果參數多了,就會顯得力不從心,代碼也會很亂,到處是if{...} 。所以我不建議在JavaScript中使用這樣的重載。

 

原文地址:http://www.cnblogs.com/xumingxiang/archive/2010/04/30/1725410.html

作者 : 徐明祥
出處:http://www.cnblogs.com/xumingxiang 
著作權:本文著作權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文串連;否則必究法律責任

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.