Sobes.tech
Junior

Šta radi funkcija `Function.prototype.bind` i zašto je potrebna?

sobes.tech АИ

Одговор од АИ

Function.prototype.bind креира нову функцију која, када се позове, има фиксни контекст (this) и, опционално, претходно дефинисане аргументе који претходе било којим аргументима прослеђеним у нову функцију при позиву.

Ово је корисно за:

  • одржавање контекста приликом преноса метода као callback-ова или handler-а догађаја.
  • делимично примену (currying) функција.
// Пример одржавања контекста

const user = {
  name: 'Alice',
  greet: function() {
    console.log(`Здраво, ${this.name}!`);
  }
};

const greetUser = user.greet;
greetUser(); // Здраво, undefined! (контекст изгубљен)

const bindedGreetUser = user.greet.bind(user);
bindedGreetUser(); // Здраво, Alice! (контекст сачуван)
// Пример делимичне примене

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

const multiplyByTwo = multiply.bind(null, 2); // null као контекст, јер није потребан

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