Sobes.tech
Junior

Co dělá funkce `Function.prototype.bind` a k čemu je potřeba?

sobes.tech AI

Odpověď od AI

Function.prototype.bind vytvoří novou funkci, která při volání bude mít pevně stanovený kontext (this) a volitelně předdefinované argumenty, které předcházejí jakýmkoli argumentům předaným nové funkci při volání.

To je užitečné pro:

  • zachování kontextu při předávání metod jako callbacků nebo obslužníků událostí.
  • částečné použití (currying) funkcí.
// Příklad zachování kontextu

const user = {
  name: 'Alice',
  greet: function() {
    console.log(`Ahoj, ${this.name}!`);
  }
};

const greetUser = user.greet;
greetUser(); // Ahoj, undefined! (kontext ztracen)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Ahoj, Alice! (kontext zachován)
// Příklad částečného použití

function multiply(a, b) {
  return a * b;
}

const multiplyByTwo = multiply.bind(null, 2); // null jako kontext, protože není potřeba

console.log(multiplyByTwo(5)); // 10