.call in javascript code example

Example 1: running a function in a function javascript

function runFunction() {
  myFunction();
}

function myFunction() {
  alert("runFunction made me run");
}

runFunction();

Example 2: call js

function Product(name, price) {
  this.name = name;
  this.price = price;

  if (price < 0)
    throw RangeError('Cannot create product "' + name + '" with a negative price');
  return this;
}

function Food(name, price) {
  Product.call(this, name, price);
  this.category = 'food';
}
Food.prototype = new Product();

function Toy(name, price) {
  Product.call(this, name, price);
  this.category = 'toy';
}
Toy.prototype = new Product();

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);

Example 3: call in javascript

// let us see what exactly CALL, BIND method in JS

/* NOTE : (CALL , APPLY executes immediately) and
(BOUND - it returns bounded function that execute later)

NOTE : call will take its additinal arguments just like that 
	   eg : XYZ.call(this , a , b , c);
       
NOTE : apply will take its additinal arguments as an ARRAY
       eg : XYZ.apply(this , [a , b , c])

NOTE : All of them are for borrowing values(property and methods)
	   from another function
*/

/*CALL method  {let's say we have constructor func}, we need all these
properties and methods in another function, in that way CALL is 
highly useful */
function Person(name,place){
    this.name = name;
    this.place = place;
    this.greet = function(){
        return (`HEllo I am ${this.name} comes from ${this.place}`);
    }
};

//I need above func prop,methods in below, let's see how to get
function Teacher(name,place,sub){
	this.sub = sub;
 //since i get name,place from Person function I no need to mention here
    Person.call(this , name , place); 
  	this.greeting = function(){
		return(`I am ${name}, from ${place} and I teach ${this.sub}`);
	}
 /* also here, we don't need to mention (this.name / this.place) because,
   we call them here and (this) referes to current Teacher context. try 
   inheriting below and check in console.
 */
}

var Te1 = new Teacher("Ranjan" , "Salem" , "JavaScript");
    Te1 // all prop and methods
    Te1.name // Ranjan
	Te1.place //Salem
	Te1.greeting() // I am Ranjan, from Salem and I teach JavaScript




// for BIND
function Student(name,place,like){
	this.like = like;
 //since i get name,place from Person function I no need to mention here
    Person.apply(this , [name , place]); 
  	this.about_me = function(){
		return(`My name is  ${name}, I come from ${place} and I
                like to play${this.like}`);
	}
}
  
var Pe1 = new Student("Max" , "Mettur" , "Cricket");
    Pe1 // all prop and methods
    Pe1.name // Max
  	Pe1.place // Metttur
    Pe1.about_me() // My name is Max, I come from Mettur and I like to play cricket

Example 4: call function javascript

// Define your function
function sayHello(msg){
	console.log("Hello, " + msg);
}

// Call it
sayHello("Norris");

// outputs:
// Hello, Norris