Middle
Co dělá a k čemu je funkce function.prototype.bind?
sobes.tech AI
Odpověď od AI
function.prototype.bind vytváří novou funkci, která při volání má nastavenou hodnotu this (tedy kontext volání) a volitelně určitý počet argumentů, které předcházejí těm, jež jsou předávány při volání nové funkce.
K čemu je to užitečné:
- Fixace kontextu (this): Zejména užitečné při asynchronních operacích, obslužnících událostí nebo při předávání metod objektů jako callbacků, kde se může změnit standardní chování
this.bindzaručuje, že metoda bude provedena v kontextu původního objektu. - Částečné použití funkcí (Currying): Umožňuje vytvořit novou funkci s předem fixovanými počátečními argumenty původní funkce.
Příklad fixace kontextu:
class MyClass {
constructor() {
this.name = 'MyClass Instance';
}
greet() {
console.log(`Ahoj z ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod je volána v globálním kontextu (nebo undefined v strict módu), `this` není MyClass
greetMethod(); // Výstup: Ahoj z undefined (nebo chyba)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod je volána s kontextem instance
boundGreetMethod(); // Výstup: Ahoj z MyClass Instance
Příklad částečného použití:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Fixujeme první argument na 2
console.log(multiplyByTwo(5)); // Výstup: 10 (stejné jako multiply(2, 5))