天天看點

精通Javascript 之 函數重載

重載是面向對象中常用的功能。雖然JS不直接支援函數重載,但是可以通過很多方式來實作函數重載。JS的每個函數都帶有一個僅在這個函數範圍内作用的變量稱為參數argument,它是一個包含所有傳給函數的參數的維數組,它并非真正意義上的數組,它不能被修改,但可以通路其中的元素及屬性。

通過下面這個例子來直覺的了解一下:

<script type="text/javascript" language="javascript">
         //發送一條消息的函數
         function sendMessage(msg, obj) {
             //如果傳入參數是兩個,使用obj發送消息
             if (arguments.length == 2)
                 obj.handleMsg(msg);
             //如果沒有傳入參數,顯示錯誤消息
             else if (arguments.length == 0)
                 alert("An error occured!");
             //如果傳入參數是msg,顯示消息
             else if (typeof (msg) == "string")
                 alert(msg);
             //如果傳入參數是obj,使用obj發送消息
             else if(typeof(msg) == "object")
                 msg.handleMsg();
         }
 
         sendMessage("Hello, World!");
 
         sendMessage();
 
         sendMessage("How are you?", {
             handleMsg: function (msg) { 
                 alert("This is a custom message: " + msg);
             }
         });
 
         sendMessage({
             handleMsg: function () {
                 alert("This is a custom message");
             }
         }); 
     </script>
           

繼續閱讀