calling in js code example

Example: 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