Sobes.tech
Junior

Co robi funkcja `Function.prototype.bind` i do czego jest potrzebna?

sobes.tech AI

Odpowiedź od AI

Function.prototype.bind tworzy nową funkcję, która podczas wywołania będzie miała ustawiony stały kontekst (this) oraz opcjonalnie zdefiniowane argumenty, które będą poprzedzały wszelkie argumenty przekazane do nowej funkcji podczas wywołania.

Jest to przydatne do:

  • zachowania kontekstu podczas przekazywania metod jako callbacków lub obsługi zdarzeń.
  • częściowego zastosowania (currying) funkcji.
// Przykład zachowania kontekstu

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

const greetUser = user.greet;
greetUser(); // Cześć, undefined! (utracony kontekst)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Cześć, Alice! (kontekst zachowany)
// Przykład częściowego zastosowania

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

const multiplyByTwo = multiply.bind(null, 2); // null jako kontekst, bo nie jest potrzebny

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