Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

Function.prototype.bind

Создаёт копию функции с закреплённым this и, при желании, аргументами.

Доступно с: ES5

Синтаксис

fn.bind(thisArg, ...args)

Параметры

ПараметрТипОписание
thisArganyЗначение this для новой функции.
...argsanyНеобязательные. Аргументы, которые будут подставлены заранее.

Возвращаемое значение

FunctionНовая функция с привязанным this и аргументами.

Примеры

Метод теряет this, если передать его отдельно:

class User {
  constructor(name) {
    this.name = name;
  }
 
  greet() {
    return `Hi, ${this.name}`;
  }
}
 
const anna = new User('Anna');
const lost = anna.greet;
const bound = anna.greet.bind(anna);
 
try {
  lost();
} catch (error) {
  console.log(error.name);
}
 
console.log(bound());

Результат:

TypeError
Hi, Anna

Частичное применение — закрепить первый аргумент:

const multiply = (a, b) => a * b;
const triple = multiply.bind(null, 3);
 
console.log(triple(5));

Результат:

15

Примечания

Самый частый случай — передача метода в обработчик события или таймер. Часто вместо bind() пишут стрелочную функцию: () => user.greet().

См. также

В учебнике

  • this, call, apply и bind — Как в JavaScript определяется this, почему метод теряет контекст и как задать this вручную методами call, apply и bind.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.