JS function重写方式
我们知道正常function的格式是:

function functionName(arg0,arg1,.....,argN){

    statements

}

function sayHi(name,message){

    alert("hello" + name + message)

}

其实ECMAScript函数是不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型的。因为ECMAScript中的参数在内部是用一个数组来表示的。函数只是接受这个数组,而不关心数组中包含哪些参数。实际上,在函数体内通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments对象只是与数组类似(它并不是Array的实例),因为可以使用方括号语法访问它的每一个元素(第一个元素是arguments[0],第二个元素是arguments[1]),使用length属性来确定有多少个参数。所以上面的那个函数也可以这样来重写:

function sayHi(){

    alert("hello" + arguments[0] + arguments[1])

}

这样重写后function不包含参数,但function的功能还是一样的。虽然这个特性算不上完美的重载,但也足够弥补ECMAScript这一缺憾了。


zorro
52 声望2 粉丝