What is the difference between using call
and apply
to invoke a function?
var func = function() {
alert(\'hello!\');
};
>
A well explained by flatline. I just want to add a simple example. which makes it easy to understand for beginners.
func.call(context, args1 , args2 ); // pass arguments as "," saprated value
func.apply(context, [args1 , args2 ]); // pass arguments as "Array"
we also use "Call" and "Apply" method for changing reference as defined in code below
let Emp1 = {
name: 'X',
getEmpDetail: function (age, department) {
console.log('Name :', this.name, ' Age :', age, ' Department :', department)
}
}
Emp1.getEmpDetail(23, 'Delivery')
// 1st approch of chenging "this"
let Emp2 = {
name: 'Y',
getEmpDetail: Emp1.getEmpDetail
}
Emp2.getEmpDetail(55, 'Finance')
// 2nd approch of changing "this" using "Call" and "Apply"
let Emp3 = {
name: 'Z',
}
Emp1.getEmpDetail.call(Emp3, 30, 'Admin')
// here we have change the ref from **Emp1 to Emp3** object
// now this will print "Name = X" because it is pointing to Emp3 object
Emp1.getEmpDetail.apply(Emp3, [30, 'Admin']) //