What is the difference between Call, Apply, and Bind?

  • Post comments:0 Comments

In JavaScript, call, apply, and bind are methods that allow you to control the invocation context of functions and explicitly set the value of this. The key differences between them are:

1) call Method

The call method invokes a function with a specified this value and individual arguments provided one by one.


function greet(name) {
  console.log(`Hello, ${name}! I am ${this.role}.`);
}
let person = { role: 'Developer' };
greet.call(person, 'John');

2) apply Method

Similar to call, the apply method invokes a function with a specified this value, but the arguments are passed as an array.


function greet(name, city) {
  console.log(`Hello, ${name}! I am ${this.role} from ${city}.`);
}
let person = { role: 'Developer' };
greet.apply(person, ['John', 'New York']);

3) bind Method

The bind method creates a new function with a specified this value, but it doesn’t invoke the function immediately. It returns a new function that can be invoked later.


function greet(name) {
  console.log(`Hello, ${name}! I am ${this.role}.`);
}
let person = { role: 'Developer' };
let boundGreet = greet.bind(person);
boundGreet('John');

Key Tips:

  • Emphasize that all three methods are used to control the value of this in a function.
  • Explain that call and apply immediately invoke the function, while bind returns a new function that can be invoked later.
  • Provide examples that clearly demonstrate the usage of each method.

Leave a Reply