将一个函数的所有参数传递给另一个函数?(javascript)
Passing all parameters of one function to another? (javascript)
如何将一个函数的所有参数传递到另一个
function a(){
arguments.length;// this is 1
// how do I pass any parameter function a receives into another function
b(what to put here?); // say pass all parameters function a receives to function b
}
a('asdf'); // this is okay
因此,如果函数a接收到X个参数,则每个参数都以相同的顺序传递给函数b。因此,如果a("1","2"),b("1"、"2");,如果a("1",2,[3]),b("1",2,[3]);。
使用Function.prototype.apply(thisArg[, argsArray])
,如下所示:
b.apply(this, arguments);
现在,arguments
是一个类似数组的对象,除了n索引属性外,它还有一些其他属性(如callee
)。因此,您可能应该使用Array.prototype.slice()
将对象转换为一个简单的参数数组(尽管两者都可以在现代环境中使用)。
b.apply(this, Array.prototype.slice.call(arguments));
另请参阅:Function.prototype.call()
为什么不将它们作为单个对象传递?使用单个对象作为参数的优点是
- 命令是没有必要的。与你必须知道它是接收集合中的第一个、第二个还是第三个的参数不同,在对象中,它们就在那里。需要的时候给他们打电话
- 你永远不会担心有多少人通过了考试。您可以发送一个包含许多属性的对象,并且在调用者和被调用者之间只传递一个参数
当然,在使用之前,您必须测试它们是否存在
function foo(data){
data.param1; //is foo
data.param2; //is bar
data.param3; //is baz
//send params to bar
bar(data);
}
function bar(info){
info.param1; //is foo
info.param2; //is bar
info.param3; //is baz
}
//call function foo and pass object with parameters
foo({
param1 : 'foo',
param2 : 'bar',
param3 : 'baz'
})
相关文章:
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为函数参数传递的匿名函数的范围
- 通过函数参数传递id
- 将数组值作为函数参数传递
- 是否需要初始化在 Javascript 中作为“类”构造函数参数传递的变量
- JavaScript 函数参数传递数组
- Angular2 将函数参数传递给构造函数
- 为什么我不能将角度变量作为函数参数传递
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- 停止对作为函数参数传递到新列表的对象引用
- 在 JavaScript 中将数组作为内置函数参数传递
- AngularJS将范围变量名称作为函数参数传递
- Javascript 将对象作为函数参数传递
- 在对象上调用方法或将对象作为函数参数传递的差异
- 正确的方法:始终将所有变量作为函数参数传递
- 如何将动态创建的复选框值作为函数参数传递
- 节点简斯 |将对象作为函数参数传递
- 什么是将对象属性作为函数参数传递的良好策略/模式
- 将对象作为函数参数传递.不确定如何访问这些值
- 为什么我们要将函数参数传递到$scope$申请