How do you pass all the parameters of one function into another
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
So if function a receives X number of parameters, each parameter is then passed into function b in the same order. So if a("1", "2"); , b("1", "2");, if a("1", 2, [3]); , b("1", 2, [3]);.
Use Function.prototype.apply(thisArg[, argsArray])
, like so:
b.apply(this, arguments);
Now, arguments
is an array-like object that has some other properties (like callee
) apart from its n-index properties. So, you probably ought to use Array.prototype.slice()
to turn the object into a simple array of arguments (though either will work in modern environments).
b.apply(this, Array.prototype.slice.call(arguments));
See also: Function.prototype.call()
why not pass them as a single object? advantages to using a single object as a parameter is that
ofcourse, you have to test them out if they exist before using
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'
})