日期:2014-05-16  浏览次数:20304 次

关于apply call 关于不定长参数
有函数A和函数B,函数A和函数B的参数都是不定长的,参数顺序、类型完全一致。现在要在函数A中调用函数B,但是在调用函数B之前,第一个参数已经作了修改,怎么把修改后的参数传给函数B?用apply call的话怎么写呀?

大概是这样子:

var func_B=function(A,B,C....){
//操作不定长的arguments
}

var func_A=function(A,B,C,,,,,){

//操作A
AA=A+1;

//调用func_B。传入的是修改之后的参数值
func_B(AA,B,C....)

}

求教坛子里的大神们!!~~

------解决方案--------------------
可以,比如下面的例子,alert 50而不是最初的100.
用法就是 函数.apply(this, arguments)
用call也可以,但不好操作,apply可以直接传参数数组。
关于apply和call建议读一读这篇
http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html

function func1()
{
arguments[1] = 50;
func2.apply(this, arguments);
}
function func2()
{
alert(arguments[1]);
}

func1("abc",100,new Object());