Middle
Ce face și pentru ce este funcția function.prototype.bind?
sobes.tech AI
Răspuns de la AI
function.prototype.bind creează o funcție nouă care, atunci când este apelată, are valoarea this stabilită (adică, contextul de apelare) și, opțional, un set definit de argumente care preced argumentele transmise la apelul noii funcții.
Pentru ce este folosit:
- Fixarea contextului (this): Deosebit de util în operațiuni asincrone, gestionarea evenimentelor sau la transmiterea metodelor obiectelor ca callback-uri, unde comportamentul standard al
thispoate fi schimbat.bindasigură că metoda va fi executată în contextul obiectului original. - Aplicarea parțială a funcțiilor (Currying): Permite crearea unei noi funcții cu argumente inițiale fixate din funcția originală.
Exemplu de fixare a contextului:
class MyClass {
constructor() {
this.name = 'MyClass Instance';
}
greet() {
console.log(`Salut din ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod este apelat în context global (sau undefined în modul strict), `this` nu este MyClass
greetMethod(); // Output: Salut din undefined (sau eroare)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod este apelat cu contextul instance
boundGreetMethod(); // Output: Salut din MyClass Instance
Exemplu de aplicare parțială:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Fixează primul argument la 2
console.log(multiplyByTwo(5)); // Output: 10 (echivalent cu multiply(2, 5))