天天看点

精通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>
           

继续阅读