NodeJS

Understanding Call, Apply, and Bind in JavaScript

Introduction

Here, first we will discuss why we need to require the call,apply & bind methods are required.So, first we will start with the problem statement with an example.

 

Problem Statement Example

The example below creates an object with 3 properties, firstName, lastName, fullName.

const person = {
 firstName:"John",
 lastName: "Doe",
 fullName: function () {
   return this.firstName + " " + this.lastName;
 }
}
// This will return "John Doe":
person.fullName();
const person2 = {
 firstName:"Kelvin",
 lastName: "Saw",
 fullName: function () {
   return this.firstName + " " + this.lastName;
 }
}
// This will return "Kelvin Saw":
person2.fullName();

You can see that the same function is being called multiple times, which causes duplication and is not reusable. There are three methods provided in JavaScript to solve this problem: Call,Apply & Bind.

Call Method

The call() method is a predefined JavaScript method.

It can be used to invoke (call) a method with an object as an argument (parameter).

Example:

function showName() {
 return this.firstName + " " + this.lastName;
}
const person = {
 firstName: "John",
 lastName: "Doe"
};
console.log(showName.call(person)); // Output: "John Doe"
const person2 = {
 firstName: "Kelvin",
 lastName: "Saw"
};
console.log(showName.call(person2)); // Output: "Kelvin Saw"

The call() Method with Arguments

function showName(city,country) {
return this.firstName + " " + this.lastName + "," + city + "," + country; ;
}
const person = {
firstName: "John",
lastName: "Doe"
};
console.log(showName.call(person,"Ahmedabad","India")); // Output: "John Doe, Ahmedabad, India"
const person2 = {
firstName: "Kelvin",
lastName: "Saw"
};
console.log(showName.call(person2,"Maxico","US")); // Output: "Kelvin Saw, Maxico, US"

Apply Method

The apply method works similarly to call, but it takes an array of arguments instead of listing them individually.

Example:

function showName(city,country) {
 return this.firstName + " " + this.lastName + "," + city + "," + country; ;
}
const person = {
 firstName: "John",
 lastName: "Doe"
};
console.log(showName.apply(person,["Ahmedabad","India"])); // Output: "John Doe, Ahmedabad, India"
const person2 = {
 firstName: "Kelvin",
 lastName: "Saw"
};

console.log(showName.apply(person2,["Maxico","US"])); // Output: "Kelvin Saw, Maxico, US"
 

Bind Method

The bind method returns a new function with a permanently bound this value. Unlike call and apply, bind does not execute the function immediately.

Example:

function greeting(greetingMsg) {
 return greetingMsg + "," + this.firstName + " " + this.lastName;
}
const person = {
 firstName: "John",
 lastName: "Doe"
};
const bindMethod = greeting.bind(person,"Hello");
//When you need to retrieve the data, call the method like this:
console.log(bindMethod());

// Output: Hello, John Doe
 

Ready to transform your business with our technology solutions?   Contact Us today to Leverage Our NodeJS Expertise.

Contact Us

0

Comment

433

Share

facebook
LinkedIn
Twitter
Mail
NodeJS

Related Center Of Excellence