Open In App

JavaScript Function..call() Method

Last Updated : 24 Jan, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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: 
 

  • thisArg: The values to use as this when calling myFunc function.
  • arg1, arg2, ..., argN: These are the arguments for the above mentioned function.


 

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

Next Article

Similar Reads