PassFront
  1. PassFront
  2. База знаний
  3. Функции

Что такое bind?

Функции

`bind` — метод функции, который создаёт новую функцию с навсегда привязанным `this` (и опционально предустановленными аргументами). В отличие от call/apply, он не вызывает функцию сразу, а возвращает новую.

Синтаксис

const bound = func.bind(thisArg, arg1, arg2);

Основное применение — сохранить контекст

const user = {
  name: 'Ann',
  greet() {
    return `Привет, ${this.name}`;
  },
};

const greet = user.greet.bind(user);
setTimeout(greet, 100); // 'Привет, Ann' — this не потерян

Без bind метод, переданный как колбэк, потерял бы this.

Частичное применение (каррирование)

bind позволяет зафиксировать часть аргументов:

function multiply(a, b) {
  return a * b;
}
const double = multiply.bind(null, 2);
double(5); // 10

bind против call/apply

  • call/apply — задают this и сразу вызывают.
  • bind — задаёт this и возвращает новую функцию для вызова позже.

Нюансы

Повторный bind уже привязанной функции не изменит this — первая привязка «побеждает».

Коротко для собеседования

bind возвращает новую функцию с зафиксированным this и, при необходимости, частью аргументов, но не вызывает её сразу. Используется, чтобы не терять контекст в колбэках и для частичного применения.

Другие вопросы раздела