认识两个参数
arguments和this可以隐式地传递给函数,并且可以像其他的参数一样进行使用。
++arguments++
是一个类数组结构。可以for循环进行遍历;通过用数组的方法;有一个length属性。
例如: 将两个对象合并成一个对象
function fn1(m){
for(i=1;i<arguments.length;i++){
for(var key in argumens[i]){
m[key]=arguments[i][key]
}
}
}
var a={name:'lili',age:'11'}
var b={name:'mary',sex:'woman'}
fn1(a,b)//此题中传入了参数m,可以看成传入了多个参数,但是m仅代表传入的第一个参数。
对于其length属性arguements.length则是在函数调用的时候传入了多少个参数。而对于function m(name,age){}中m.length则代表传入了多少个参数。对于arguments如果在函数中传入了2个参数,但是调用的时候只传入了1个参数,则第二个参数保存为undefind的值。
例如:
function fn1(){
console.log(arguments.length)
}
fn1(1,2,3)
function fn2(num,sum){
return num+sum;
}
alert(fn2.length)
++this++
this依赖于函数的调用方式,即哪个对象调用了函数,this就代表哪个对象
函数的重载
++重载的定义++
函数的名称一样,可以输入不同的值而不被覆盖,或者可以根据不同的值调用不同的函数。
js中虽然没有重载但是可以实现重载
例如:
function fn1(m){
switch(arguments.length){
case 0:return 0;
case 1:retrun arguments[0];
case 2:return arguments[0]+arguments[1];
}
}
fn1(2,3)
网友评论