js函数重载
其它面向对象的语言(比如Java)的一种共有的特性是“重载”函数的能力:传给它们不同数目或类型的参数,函数将执行不同操作。虽然这种能力在JavaScript 中不是直接可用的,一些工具的提供使得这种探求完全成为可能。
在JavaScript的每一个函数里存在一个上下文相关的名为arguments的变量,它的行为类似于一个伪数组,包含了传给函数的所有参数。参数不是一真正的数组(意味着你不能修改它,或者调用push()方法增加新的项),但是你可以以数组的形式访问它,而且它也的确有一个length属性。
示例
在JavaScript的每一个函数里存在一个上下文相关的名为arguments的变量,它的行为类似于一个伪数组,包含了传给函数的所有参数。参数不是一真正的数组(意味着你不能修改它,或者调用push()方法增加新的项),但是你可以以数组的形式访问它,而且它也的确有一个length属性。
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 //一个简单的用来发送消息的函数
2 function sendMessage( msg, obj ) {
3 //如果同时提供了一个消息和一个对象
4 if ( arguments.length == 2 )
5 //就将消息发给该对象
6 obj.handleMsg( msg );
7 //否则,刚假定只有消息被提供
8 else
9 //于是显示该消息
10 alert( msg );
11 }
12 //调用函数,带一个参数– 用警告框显示消息
13 sendMessage( "Hello, World!" );
14 //或者,我们也可以传入我们自己的对象用
15 //一种不同方式来显示信息
16 sendMessage( "How are you?", {
17 handleMsg: function( msg ) {
18 alert( "This is a custom message: " + msg );
19 }
20 });
21 //一个使用任意数目参数创建一个数组的函数
22 function makeArray() {
23 //临时数组
24 var arr = [];
25 //遍历提交的每一个参数
26 for ( var i = 0; i < arguments.length; i++ ) {
27 arr.push( arguments[i] );
28 }
29 //返回结果数组![插入代码 插入代码](https://www.cnblogs.com/Images/code.gif)
30 return arr;
31 }
2 function sendMessage( msg, obj ) {
3 //如果同时提供了一个消息和一个对象
4 if ( arguments.length == 2 )
5 //就将消息发给该对象
6 obj.handleMsg( msg );
7 //否则,刚假定只有消息被提供
8 else
9 //于是显示该消息
10 alert( msg );
11 }
12 //调用函数,带一个参数– 用警告框显示消息
13 sendMessage( "Hello, World!" );
14 //或者,我们也可以传入我们自己的对象用
15 //一种不同方式来显示信息
16 sendMessage( "How are you?", {
17 handleMsg: function( msg ) {
18 alert( "This is a custom message: " + msg );
19 }
20 });
21 //一个使用任意数目参数创建一个数组的函数
22 function makeArray() {
23 //临时数组
24 var arr = [];
25 //遍历提交的每一个参数
26 for ( var i = 0; i < arguments.length; i++ ) {
27 arr.push( arguments[i] );
28 }
29 //返回结果数组
![插入代码 插入代码](https://www.cnblogs.com/Images/code.gif)
30 return arr;
31 }