JS: Function Call, Apply, Bind

By Xah Lee. Date: . Last updated: .

In JavaScript, any function defined by function , when called, has a associated value called “this binding”.

In function definition body, the value of “this binding” is represented by the keyword this.

[see JS: “this” Binding]

When a function f is called in the form x.f(…), the value of “this binding” is the object x.

The following are ways to let you call a function and explicitly pass a value of your choice for this binding.


f.call(obj, arg1, arg2 …) → evaluate f(arg1, arg2 …) with f's this keyword having value of obj.

[see JS: Function.prototype.call]


f.apply(obj, array) → evaluate function f with f's this keyword have value of obj, and elements of the array array is passed to the function as arguments.

[see JS: Function.prototype.apply]


Reflect.apply ( f, this_binding, argList ) → Call f with its this keyword having value of this_binding, and with arguments of elements in argList.

[see JS: Reflect.apply]


f.bind(obj) → returns a function such that it has the same behavior as f except f's this value is always obj.

f.bind(obj, args …) → the new function will always be given the arguments args.

[see JS: Function.prototype.bind]

Function Topic

  1. JS: Define Function
  2. JS: Arrow Function
  3. JS: Function Parameters
  4. JS: var/function Declaration Order
  5. JS: var Name Scope
  6. JS: Function Declaration vs Function Expression
  7. JS: Closure
  8. JS: Functional Programing
  9. JS: Function Call, Apply, Bind
  10. JS: Function Argument Default Value
  11. JS: Function Rest Parameters
  12. JS: Function Argument Destructure

  1. JS: Function Object
  2. JS: Function.prototype
Liket it? Put $5 at patreon.

Or, Buy JavaScript in Depth

Ask me question on patreon