JavaScript Function.prototype.call() Method (original) (raw)

Last Updated : 24 Jan, 2022

The call() method allows function calls belonging to one object to be assigned and it is called for a different object. It provides a new value of this to the function. The call() method allows you to write a method once and allows it for inheritance in another object, without rewriting the method for the new object.

Syntax:

myFunc.call([thisArg[, arg1, arg2, ...argN]])

Parameters:

Note: In certain cases, thisArg may not be the actual value. If the method is in non-strict mode, primitive values will be converted to objects and null,undefined will be replaced with the global object.

Return value: It returns the specified this value and arguments as a result of calling of the function.

Example 1: The following example demonstrates the use of calling to chain constructors for an object.

html

< script >

function Product(name,

`` price) {

`` this.name = name;

`` this.price = price;

`` }

`` function Vehicle(name,

`` price) {

`` Product.call(this,

`` name, price);

`` this.category = 'vehicle';

`` }

`` function Restaurant(name,

`` price) {

`` Product.call(this,

`` name, price);

`` this.category = 'restaurant';

`` }

`` const car = new Vehicle('Suzuki',

`` 100000);

`` const restau = new

`` Restaurant('KFC', 1000);

`` console.log(car);

`` console.log(restaurant);

</ script >

Output:

Example 2: The following example demonstrates the use of call() method to invoke an anonymous function.

html

< script >

const Birds = [

`` { species: 'Pigeon', name: 'King' },

`` { species: 'Crow', name: 'Fail' }

`` ];

let i=0;

`` while(i< Birds.length ){

`` (function(i) {

`` this.print = function () {

`` console.log('#' + i + ' '

`` + this.species

`` + ': ' + this.name);

`` }

`` this.print();

`` }).call(Birds[i], i);

`` ++i;

`` }

</script>

Output:

#0 Pigeon: King #1 Crow: Fail

Example 3: The following example demonstrates the use of call method to invoke a function and specifying the context for ‘this’.

html

< script >

function greet() {

`` const reply = [this.animal,

`` 'typically sleep between',

`` this.sleepDuration].join(' ');

`` console.log(reply);

`` }

`` const obj = {

`` animal: 'Rats',

`` sleepDuration: '2 and 5 hours'

`` };

`` greet.call(obj);

</ script >

Output:

Rats typically sleep between 2 and 5 hours

Example 4: The following example demonstrates the use of call() method to invoke a function without specifying the first argument.

html

< script >

var str = 'Brad';

function display() {

`` console.log('string value is %s ',

`` this.str);

}

display.call();

</ script >

Output:

string value is Brad

Note: In strict mode, the value of this will be undefined.

html

< script >

'use strict';

var str = 'Brad';

function display() {

`` console.log('str value is %s ',

`` this.str);

}

display.call();

</ script >

Output:

Cannot read property 'str' of undefined