Для чего нужен bind в JavaScript?
Функции
`bind` в JavaScript нужен, чтобы создать новую функцию с навсегда привязанным `this` (и, при необходимости, предустановленными аргументами). В отличие от call/apply, он не вызывает функцию сразу.
Основное назначение — сохранить контекст
Метод, переданный как колбэк, теряет this. bind это исправляет:
const user = {
name: 'Ann',
greet() { return `Привет, ${this.name}`; },
};
const greet = user.greet.bind(user);
setTimeout(greet, 100); // 'Привет, Ann' — this сохранёнБез bind внутри setTimeout 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и возвращает новую функцию для вызова позже.
Где применяют
- Колбэки, обработчики событий (сохранить контекст).
- Передача методов классов в JSX (или заменяют стрелками/полями класса).
Коротко для собеседования
bind создаёт новую функцию с зафиксированным this и опционально частью аргументов, но не вызывает её сразу. Нужен, чтобы не терять контекст в колбэках/обработчиках и для частичного применения. Отличается от call/apply, которые вызывают немедленно.