Middle
Ինչ է անում և ինչու է անհրաժեշտ function.prototype.bind գործառույթը։
sobes.tech AI
Պատասխան AI-ից
function.prototype.bind ստեղծում է նոր ֆունկցիա, որը երբ կանչվում է, ունի սահմանված this արժեքը (այսինքն, կանչի կոնտեքստը) և, ցանկության դեպքում, որոշված արգումենտների հավաքածու, որոնք նախորդում են կանչի ժամանակ փոխանցված այն արգումենտներին:
Ի՞նչ է դա անհրաժեշտ:
- Կոնտեքստի (this) ամրապնդում: Հատկապես օգտակար է ասինխրոն գործառույթներում, իրադարձությունների մշակողներում կամ օբյեկտների մեթոդները որպես callback փոխանցելիս, որտեղ
this-ի ստանդարտ վարքագիծը կարող է փոխվել:bindապահովում է, որ մեթոդը կիրականացվի սկզբնական օբյեկտի կոնտեքստում:
class MyClass {
constructor() {
this.name = 'MyClass Օբյեկտ';
}
greet() {
console.log(`Ողջույն, ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod-ը կանչվում է գլոբալ կոնտեքստում (կամ strict ռեժիմում `undefined`), `this`-ը չի լինի MyClass
greetMethod(); // Արտածում: Ողջույն, undefined (կամ սխալ)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod-ը կանչվում է `instance` կոնտեքստով
boundGreetMethod(); // Արտածում: Ողջույն, MyClass Օբյեկտ
Օրինակ՝ մասամբ կիրառություն:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Առաջին արգումենտը սահմանում ենք որպես 2
console.log(multiplyByTwo(5)); // Արտածում: 10 (նույն է, ինչ `multiply(2, 5)`)