Sobes.tech
Junior
107
questionbank

Что делает функция `Function.prototype.bind` и для чего она нужна?

Ответ от нейросети

sobes.tech AI

Function.prototype.bind создает новую функцию, которая при вызове будет иметь жестко заданный контекст (this) и, опционально, предопределенные аргументы, предшествующие любым аргументам, переданным новой функции при вызове.

Это полезно для:

  • сохранения контекста при передаче методов в качестве колбэков или обработчиков событий.
  • частичного применения (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