Sobes.tech
Junior

Ką daro funkcija `Function.prototype.bind` ir kam ji reikia?

sobes.tech AI

Atsakymas iš AI

Function.prototype.bind sukuria naują funkciją, kuri, iškvietus, turės fiksuotą kontekstą (this) ir, pageidaujant, iš anksto apibrėžtus argumentus, kurie eina prieš bet kokius argumentus, perduodamus naujai funkcijai iškvietimo metu.

Tai naudinga:

  • išlaikyti kontekstą perduodant metodus kaip callback'us arba įvykio tvarkytojus.
  • dalinės funkcijos taikymas (currying).
// Konteksto išsaugojimo pavyzdys

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

const greetUser = user.greet;
greetUser(); // Sveiki, undefined! (kontekstas prarastas)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Sveiki, Alice! (kontekstas išsaugotas)
// Dalinės taikymo pavyzdys

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

const multiplyByTwo = multiply.bind(null, 2); // null kaip kontekstas, nes nereikia

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