Связанная функция - это функция, контекст и/или аргументы которой привязаны к определенным значениям. Создается связанная функция с помощью метода .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.