Calling a function allows you to provide parameters in one at a time.
Apply calls the method and accepts an array of arguments as input.
Bind creates a new function that accepts this array as well as any number of arguments.
A function/method belonging to one object can be assigned to and invoked for another object using the call() method. The function/method receives a new value of this from call(). You can write a method once and then inherit it from another object using call(), eliminating the need to rebuild the function for the new object.
Apply allows you to write a method once and then inherit it from another object without having to redo the method. Except for the type of arguments it accepts, apply is quite similar to call(). Instead of a list of arguments, you use an arguments array (parameters).