Middle
Šta radi i zašto je potrebna funkcija function.prototype.bind?
sobes.tech АИ
Одговор од АИ
function.prototype.bind kreira novu funkciju koja, kada se pozove, ima postavljenu vrednost this (tj. kontekst poziva) i, opcionalno, određeni skup argumenata koji prethode onima koji se prosleđuju prilikom poziva nove funkcije.
Za šta je korisno:
- Fiksiranje konteksta (this): Posebno korisno u asinhronim operacijama, rukovaocima događaja ili prilikom prosleđivanja metoda objekata kao callback-ova, gde se standardno ponašanje
thismože menjati.bindgarantuje da će metoda biti izvršena u kontekstu originalnog objekta. - Delimična primena funkcija (Currying): Omogućava kreiranje nove funkcije sa fiksiranim početnim argumentima originalne funkcije.
Primer fiksiranja konteksta:
class MyClass {
constructor() {
this.name = 'MyClass Instance';
}
greet() {
console.log(`Zdravo od ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod se poziva u globalnom kontekstu (ili undefined u strict modu), `this` nije MyClass
greetMethod(); // Izlaz: Zdravo od undefined (ili greška)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod se poziva sa kontekstom instance
boundGreetMethod(); // Izlaz: Zdravo od MyClass Instance
Primer delimične primene:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Fiksiramo prvi argument na 2
console.log(multiplyByTwo(5)); // Izlaz: 10 (isto kao multiply(2, 5))