Что такое 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); // 10bind против call/apply
- call/apply — задают
thisи сразу вызывают. - bind — задаёт
thisи возвращает новую функцию для вызова позже.
Нюансы
Повторный bind уже привязанной функции не изменит this — первая привязка «побеждает».
Коротко для собеседования
bind возвращает новую функцию с зафиксированным this и, при необходимости, частью аргументов, но не вызывает её сразу. Используется, чтобы не терять контекст в колбэках и для частичного применения.