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

myFunc.bind(thisArg, arg1, arg2, ...) принимает первый аргумент thisArg в качестве контекста и необязательный список аргументов arg1, arg2, ... для связки. .bind() возвращает новую функцию, контекст которой привязан к thisArg, а аргументы - к arg1, arg2, ....

Следующий код создает связанную функцию, а затем вызывает ее:

function multiply(number) {
  'use strict';
  return this * number;
}
// Создаем связанную функцию с контекстом
const double = multiply.bind(2);
// Вызываем связанную функцию
double(3);  // => 6
double(10);  // => 20

multiply.bind(2) возвращает новый объект функции double, который связан с номером 2. multiply и double содержат одинаковый код и область видимости.

В отличие от методов .apply() и .call() (см. 5), которые вызывают функцию сразу, метод .bind() возвращает только новую функцию, которая должна быть вызвана позже с заранее определенным значением this.