Learnitweb

JavaScript call() method

1. Introduction

The call() method calls a function. While calling this method you can provide this argument and other arguments.

All the following are valid versions of call() method:

call()
call(thisArgument)
call(thisArgument, arg1)
call(thisArgument, arg1, arg2)
call(thisArgument, arg1, ... , argN)

thisArgument is the optional argument which is used as this. arg1….argN are the optional arguments provided to the function.

2. Examples of call()

Example 1: Using call() to call a function

In this example, we are using call() without any argument.

function hello() {
  console.log("hello world");
}

hello.call(); //hello world

Example 2: Using call() with this

In this example, while using call(), we are passing one argument. Since the first argument is this, this will refer to { msg: "hello world" }.

function hello() {
  console.log(this.msg);
}

hello.call({ msg: "hello world" }); // hello world

Example 3: Using call() with this and argument

function hello(msg) {
  console.log(msg);
}

hello.call(this, "hello world"); //hello world

Example 4: Constructor chaining using call() method

Constructor chaining is similar to that of in Java. In this example, we are creating an object of Car. Inside the function Car, we are calling function Vehicle and setting properties wheels and color. While calling Vehicle we are using this, it will set properties wheels and color of Car.

function Vehicle(wheels, color) {
  this.wheels = wheels;
  this.color = color;
}

function Car(wheels, color) {
  Vehicle.call(this, wheels, color);
  this.brand = "audi";
}

let car = new Car(4, "red");
console.log(car);

Example 5: Using call() to invoke an anonymous function

Call can be used to invoke an anonymous function. Following is a simple example:

(function (msg) {
  console.log(msg);
}.call(this, "hello"));

3. Conclusion

In this tutorial, we discussed call() method of JavaScript. It is a very important question for interview. You may find the use of this method in old code.

We have hope this tutorial was informative.