11

I have two function a() and b(), both are variadic functions, let say when I call function a() like this :

a(arg0, arg1, arg2, arg3, ...., argn);

then the function b() will be called as well inside a(), but without the first argument "arg0" in the arguments list of a() :

b(arg1, arg2, arg3, ...., argn);

Is there any way for it?

1

1 Answer 1

25

Every JavaScript function is really just another "object" (object in the JavaScript sense), and comes with an apply method (see Mozilla's documentation). You can thus do something like this....

b = function(some, parameter, list) { ... }

a = function(some, longer, parameter, list)
{
   // ... Do some work...

   // Convert the arguments object into an array, throwing away the first element
   var args = Array.prototype.slice.call(arguments, 1);

   // Call b with the remaining arguments and current "this"
   b.apply(this, args);
}
Sign up to request clarification or add additional context in comments.

2 Comments

Cool, I have just done a quick test and it works fine. Thanks for your help!
Why do you need to use the prototype explicitly? Can't you arguments.slice(1) or something?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.