You might ask what is the difference between the two? Does one provide better performance than the other? Is one better to use than the other?
The best way to understand the difference between the two is to examine the pseudo syntax for each.
function.apply(thisArg, [argsArray]); function.call(thisArg[, arg1[, arg2[, ...]]]);
The call method calls a function with a given this value and arguments provided individually. The arguments are listed in comma separated format.
The first argument is the this value. This refers to the current object which is also know as the calling object.
With call you can write a method once and then inherit it in another object, without having to rewrite the method for the new object.
The apply method calls a function with a given this value and arguments provided as an array.
Just like call you can write a method once and the inherit it in another object, without having to rewrite the method for the new object.
While the syntax of .apply() and .call() are almost identical, the fundamental difference is that call() accepts an argument list, while apply() accepts a single array of arguments.