Sobes.tech
Junior

Mida teeb funktsioon `Function.prototype.bind` ja milleks see vajalik on?

sobes.tech AI

Vastus AI-lt

Function.prototype.bind loob uue funktsiooni, millel on fikseeritud kontekst (this) ja valikulised eelmääratud argumendid, mis tulevad enne kõiki argumente, mida uuele funktsioonile kutsumisel edastatakse.

See on kasulik:

  • konteksti säilitamiseks, kui meetodeid edastatakse callback'idena või sündmuse töötlejatena.
  • funktsioonide osalise rakendamise (currying) jaoks.
// Konteksti säilitamise näide

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

const greetUser = user.greet;
greetUser(); // Tere, undefined! (kontekst kadunud)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Tere, Alice! (kontekst säilitatud)
// Osalise rakendamise näide

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

const multiplyByTwo = multiply.bind(null, 2); // null kontekstina, kuna see ei ole vajalik

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