首頁 >web前端 >js教程 >Javascript基礎 函數「重載」 詳細介紹_基礎知識

Javascript基礎 函數「重載」 詳細介紹_基礎知識

WBOY
WBOY原創
2016-05-16 17:18:401001瀏覽

  Javascript不像其他程式語言一樣具有函數簽名(什麼是函數簽名,簡單的說就是說函數的接受參數類型和參數個數,也有人認為返回類型也應該包括。具體概念大家可以到網上查詢)。

所以Javascript是不能像其他語言一樣實現方法名相同,參數個數不同…的這類重載的,不信你可以試試:

複製碼 代碼如下:

     alert("1 ");
         }
         function show(num1){
      >
         window.onload=function(){
             show();
             show(2);
         }



斷點調試下,不帶參數的show方法是不會被執行的,它會被show(num1)方法給覆蓋掉。
那麼Javascript中就不可以實現「重載」了麼?答案是可以的,只是另一種方式而已。對,就是利用arguments。

那麼什麼是arguments呢?在JS中它是一個特殊的屬性,它可以像數組一樣透過下標索引來取得參數的值(但它不是數組),透過length取得參數個數:

複製碼 代碼如下:       alert("參數個數:" arguments.length);//輸出:參數個數:4
             alert("下標索引為3的參數:" arguments[3]);//輸出: 下標索引為3的參數:" arguments[3]);//輸出: 下標索引為3的參數:你好
         }

         window.onload=function(){         }



還要知道的一點是JS中函數的命名參數不是必須的,所以要想知道呼叫時傳遞了多少個參數還是得透過arguments取得參數。

下面就實作一個簡單的方法重載:

複製碼

代碼如下:      if(arguments. length==1){                 alert(arguments[0]);                 alert(arguments[0] "說:" arguments[1]) ;             }else{
                      }

         window.onload=function(){
        showMessage ("張三","Hi 你妹");
         }



這樣JS的重載算是實現了。

在看js高階程式設計這本書的時候發現arguments的值與對應命名參數的值永遠同步,以前沒注意過這個問題





複製程式碼

程式碼如下:


         function showMessage(name,msg){
            name "說:" msg);//輸出:張三說:我可以改變msg的值
         }

         window.onload=function(){
         }


好吧關於js「重載」的基礎知識就這麼
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn