2.15 Call, Bind āĻāĻŦāĻ Apply
āĻāĻāĻā§āĻ° āĻāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻŦāĻŋāĻˇā§ āĻšāĻā§āĻā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° Call(), Apply() āĻāĻŦāĻ Bind() āĻŽā§āĻĨāĻĄ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ āĻŽā§āĻĨāĻĄāĻā§āĻ˛ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻāĻž āĻā§āĻŦ āĻĒā§āĻ°ā§ā§āĻāĻ¨āĨ¤ āĻ¤āĻžāĻ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦā§ āĻāĻāĻā§ āĻāĻŋāĻā§ āĻāĻāĻāĻĢā§āĻ˛ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻāĻŋā§ā§ āĻāĻ āĻŽā§āĻĨāĻĄāĻā§āĻ˛ā§āĻā§ āĻ¨āĻŋā§ā§ āĻāĻāĻā§ āĻ˛ā§āĻāĻ¤ā§āĨ¤ āĻāĻļāĻž āĻāĻ°āĻŋ, āĻāĻāĻā§āĻ° āĻĒāĻ° āĻĨā§āĻā§ āĻāĻ āĻ¤āĻŋāĻ¨āĻāĻž āĻŽā§āĻĨāĻĄ āĻ¨āĻŋā§ā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻŦā§ āĻ¨āĻž āĻāĻ¨āĻļāĻžāĻāĻ˛ā§āĻ˛āĻžāĻšā§âāĨ¤
Call(), Apply() āĻāĻŦāĻ Bind() āĻŽā§āĻĨāĻĄ āĻŦā§āĻāĻ¤ā§ āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻā§ âthisâ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ âthisâ āĻ¨āĻŋā§ā§ āĻĒā§āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻžāĻšāĻ˛ā§Â āĻāĻāĻžāĻ¨ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨āĨ¤
Call() āĻŽā§āĻĨāĻĄāĻ
Call() āĻŽā§āĻĨāĻĄ āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ âthisâ āĻāĻ° āĻā§āĻ¯āĻžāĻ˛ā§ āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¯ā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛ā§ āĻĨāĻžāĻāĻŦā§ āĻ¸ā§āĻā§āĻ˛ā§ āĻšāĻŦā§ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĨ¤ Call() āĻŽā§āĻĨāĻĄ āĻāĻ¨āĻĄāĻŋāĻāĻŋāĻā§ā§āĻžāĻ˛ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¨ā§ā§āĨ¤ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŦāĻžāĻ° āĻā§ā§āĻāĻāĻž āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻž āĻ¯āĻžāĻāĨ¤
let person = {
name: "Saroar Hossain Shahan",
};
let getInfo = function (id) {
return `Welcome ${this.name}, Your roll number is ${id}.`;
};
console.log(getInfo.call(person, 99)); // Welcome Saroar Hossain Shahan, Your roll number is 99.
āĻāĻĒāĻ°ā§āĻ° āĻā§āĻĄā§ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§, getInfo() āĻāĻ° āĻ¸āĻžāĻĨā§ Call() āĻŽā§āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšā§ā§āĻā§ āĻāĻŦāĻ Call() āĻŽā§āĻĨāĻĄ āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ âthisâ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ¸ā§āĻ āĻāĻ°ā§, āĻ¯ā§āĻāĻŋ āĻšāĻā§āĻā§ person āĻ āĻŦāĻā§āĻā§āĻāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛ā§ āĻšāĻā§āĻā§ āĻ¯ā§ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ˛ āĻšāĻā§āĻā§ āĻ¤āĻžāĻ° āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻāĻ¸āĨ¤ āĻāĻ˛ā§āĻ¨ āĻāĻ°ā§āĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻŋ āĻ¯ā§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻĻā§āĻ° āĻ°āĻŋā§ā§āĻ˛ āĻ˛āĻžāĻāĻĢ āĻĒā§āĻ°āĻā§āĻā§āĻā§ āĻāĻžāĻā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ§āĻ°ā§āĻ¨, āĻāĻĒāĻ¨āĻŋ Person āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻž āĻā§āĻ˛āĻžāĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ˛ā§āĻ¨āĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ Student āĻ¨āĻžāĻŽā§ āĻāĻ°ā§āĻāĻāĻž āĻā§āĻ˛āĻžāĻ¸ āĻŦāĻžāĻ¨āĻžāĻ¤ā§ āĻšāĻŦā§ āĻāĻžāĻ¤ā§āĻ°āĻĻā§āĻ° āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯ā§
function Person(fName, lName, age) {
this._firstName = fName;
this._lastName = lName;
this._age = age;
}
function Student(fName, lName, age, roll, section) {
this._firstName = fName;
this._lastName = lName;
this._age = age;
this._roll = roll;
this._section = section;
}
let std1 = new Student("Saroar Hossain", "Shahan", 25, 99, "B");
console.log(std1);
/**
* output:
* _age: 25
* _firstName: Saroar Hossain
* _lastName: Shahan
* _roll: 99
* _section: 'B'
* */
āĻāĻāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻŋāĻˇā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻ¨ āĻ¯ā§, āĻāĻŽāĻžāĻĻā§āĻ° Person āĻā§āĻ˛āĻžāĻ¸ā§ āĻ¯ā§ āĻā§āĻāĻž āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻāĻā§ āĻāĻāĻ āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋāĻā§āĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° Student āĻā§āĻ˛āĻžāĻ¸ā§āĻ āĻāĻā§āĨ¤ āĻāĻā§āĻāĻž āĻāĻāĻ¨ āĻāĻŽāĻ¨ āĻ¯āĻĻāĻŋ āĻšāĻ¤ āĻ¯ā§, Person āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¸āĻŦ āĻā§āĻāĻž āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° Student āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ā§āĻ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤ āĻ¤āĻžāĻšāĻ˛ā§ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°āĻāĻž āĻ āĻ¨ā§āĻ āĻŽāĻāĻžāĻ° āĻšāĻ¤ āĻ¤āĻžāĻ āĻ¨āĻž? āĻāĻā§āĻāĻž āĻĻā§āĻāĻŋ āĻā§āĻ¨ āĻŽāĻ¤ā§ Person āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋāĻā§āĻ˛ā§āĻā§ āĻāĻĒāĻ¨āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ā§ āĻ§āĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§ āĻāĻŋāĻ¨āĻžāĨ¤
function Person(fName, lName, age) {
this._firstName = fName;
this._lastName = lName;
this._age = age;
}
function Student(fName, lName, age, roll, section) {
Person.call(this, fName, lName, age, roll, section);
this._roll = roll;
this._section = section;
}
let std1 = new Student("Saroar Hossain", "Shahan", 25, 99, "B");
console.log(std1);
/**
* output:
* _age: 25
* _firstName: Saroar Hossain
* _lastName: Shahan
* _roll: 99
* _section: 'B'
* */
āĻāĻŋ āĻ āĻ¨ā§āĻ āĻŽāĻāĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ° āĻ¤āĻžāĻ āĻ¨āĻž? āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ āĻā§āĻĄ āĻāĻŽā§ āĻā§āĻ˛āĨ¤ āĻāĻāĻāĻĒā§āĻ āĻĻā§āĻā§āĻ¨ āĻ¸āĻŦ āĻāĻŋāĻā§ āĻāĻā§āĻ° āĻŽāĻ¤āĻ āĻāĻā§āĨ¤
Apply() āĻŽā§āĻĨāĻĄāĻ
Apply() āĻŽā§āĻĨāĻĄ āĻāĻŦāĻ Call() āĻŽā§āĻĨāĻĄā§āĻ° āĻŽāĻžāĻā§ āĻŦāĻŋāĻļā§āĻˇ āĻā§āĻ¨ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ¨ā§āĻāĨ¤ āĻĻā§āĻāĻžāĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§ āĻāĻŽāĻŋāĻĄāĻŋā§ā§āĻāĻ˛āĻŋ āĻāĻ¨āĻā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ Apply() āĻŽā§āĻĨāĻĄ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻž Array āĻ¨ā§ā§āĨ¤
let person = {
name: "Saroar Hossain Shahan",
};
let getInfo = function (id) {
return `Welcome ${this.name}, Your roll number is ${id}.`;
};
console.log(getInfo.call(person, [99])); // Welcome Saroar Hossain Shahan, Your roll number is 99.
āĻļā§āĻ§ā§ āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻĄ āĻāĻžā§āĻž āĻāĻāĻāĻĒā§āĻā§ āĻā§āĻ¨ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ¨ā§āĻāĨ¤ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ°ā§āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻžāĻ āĻĻā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤
function Person(fName, lName, age) {
this._firstName = fName;
this._lastName = lName;
this._age = age;
}
function Student(fName, lName, age, roll, section) {
Person.apply(this, [fName, lName, age, roll, section]);
this._roll = roll;
this._section = section;
}
let std1 = new Student("Saroar Hossain", "Shahan", 25, 99, "B");
console.log(std1);
/**
* output:
* _age: 25
* _firstName: Saroar Hossain
* _lastName: Shahan
* _roll: 99
* _section: 'B'
* */
āĻāĻāĻ¨ āĻ§āĻ°ā§āĻ¨ āĻāĻĒāĻ¨āĻžāĻ° Student āĻā§āĻ˛āĻ¸ā§ āĻā§āĻāĻž āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻž āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ¨āĻž āĻ¨ā§āĻāĨ¤ āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ°āĻŦā§āĻ¨? āĻā§āĻŦ āĻ¸āĻšāĻ āĻāĻāĻāĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¯ā§, āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ arguments āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻž āĻŦāĻŋāĻ˛ā§āĻĄ-āĻāĻ¨ āĻ āĻŦāĻā§āĻā§āĻ āĻāĻā§āĨ¤ āĻāĻāĻāĻž āĻ āĻŦāĻā§āĻā§āĻ āĻšāĻ˛ā§āĻ āĻāĻ¸āĻ˛ā§ āĻāĻžāĻ āĻāĻ°ā§ Array āĻāĻ° āĻŽāĻ¤ āĻāĻ°ā§ āĻāĻŦāĻ Apply āĻŽā§āĻĨāĻĄ āĻ¯ā§āĻšā§āĻ¤ā§ Array āĻ¨āĻŋā§ā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻ°āĻž arguments āĻ āĻŦāĻā§āĻā§āĻ āĻĻāĻŋā§ā§āĻ āĻāĻ āĻāĻžāĻāĻāĻŋ āĻāĻ°ā§ āĻĢā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻā§āĻŦ āĻ¸āĻšāĻā§āĨ¤
function Person(fName, lName, age) {
this._firstName = fName;
this._lastName = lName;
this._age = age;
}
function Student(fName, lName, age, roll, section) {
Person.apply(this, arguments);
this._roll = roll;
this._section = section;
}
let std1 = new Student("Saroar Hossain", "Shahan", 25, 99, "B");
console.log(std1);
/**
* output:
* _age: 25
* _firstName: Saroar Hossain
* _lastName: Shahan
* _roll: 99
* _section: 'B'
* */
āĻāĻāĻāĻĒā§āĻ āĻāĻā§āĻ° āĻŽāĻ¤āĻ āĻĻā§āĻāĻžāĻā§āĻā§ đ
Bind() āĻŽā§āĻĨāĻĄāĻ
Bind() āĻŽā§āĻĨāĻĄ āĻšāĻā§āĻā§ Call() āĻāĻŦāĻ Apply() āĻŽā§āĻĨāĻĄā§āĻ° āĻŦāĻŋāĻĒāĻ°ā§āĻ¤āĨ¤ āĻāĻžāĻ°āĻŖ Call () āĻāĻŦāĻ Apply() āĻŽā§āĻĨāĻĄ āĻāĻŽāĻŋāĻĄāĻŋā§ā§āĻāĻ˛āĻŋ āĻāĻ¨āĻā§āĻ āĻāĻ°ā§ āĻĢā§āĻ˛ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ Bind() āĻŽā§āĻĨāĻĄ āĻ¸ā§āĻāĻž āĻ¨āĻž āĻāĻ°ā§ āĻ¸ā§ āĻāĻāĻāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻĄā§āĻĢāĻŋāĻ¨ā§āĻļāĻ¨ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§āĨ¤ āĻ¯āĻž āĻāĻĒāĻ¨āĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻ¯ā§āĻā§āĻ¨ āĻ¸āĻŽā§, āĻ¯ā§āĻā§āĻ¨ āĻāĻžā§āĻāĻžā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻā§āĻāĻž āĻŽāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨āĨ¤
let person = {
name: "Saroar Hossain Shahan",
};
let getInfo = function (id) {
return `Welcome ${this.name}, Your roll number is ${id}.`;
};
let boundInfo = getInfo.bind(person);
console.log(boundInfo);
/**
* output:
* f (id) {
* return `Welcome ${this.name}, Your roll number is ${id}.`;
* }
* */
āĻāĻāĻāĻĒā§āĻā§ āĻĻā§āĻā§āĻ¨ boundInfo āĻĢāĻžāĻāĻļāĻ¨ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĄā§āĻĢāĻŋāĻ¨ā§āĻļāĻ¨ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻā§āĨ¤ āĻāĻāĻ¨ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻāĻ¸ āĻĻāĻŋā§ā§ āĻāĻ¨āĻā§āĻ āĻāĻ°āĻŋ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻāĻāĻāĻĒā§āĻ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĨ¤
let person = {
name: "Saroar Hossain Shahan",
};
let getInfo = function (id) {
return `Welcome ${this.name}, Your roll number is ${id}.`;
};
let boundInfo = getInfo.bind(person);
console.log(boundInfo(99));
āĻāĻ āĻāĻŋāĻ˛ āĻāĻāĻā§āĻ° Call(), Apply() āĻāĻŦāĻ Bind() āĻŽā§āĻĨāĻĄ āĻ¨āĻŋā§ā§ āĻ˛ā§āĻāĻžāĨ¤
- āĻ¨āĻŋāĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻž āĻĻā§āĻā§āĻ¨āĨ¤
- āĻ¨āĻŋāĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻž āĻĻā§āĻā§āĻ¨āĨ¤
- Why should use âapplyâ?
- How to use the âbindâ?