> Что такое call, apply и bind в JavaScript и в чем их разница (JavaScript)
Уровень: junior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: Mosline
Стек: Node.js, JavaScript
> Пример ответа
call, apply и bind - это методы, доступные у функций в JavaScript, которые позволяют явно задать контекст this при вызове функции. Их основное различие - в способе передачи аргументов и моменте выполнения.
-
call(thisArg, arg1, arg2, ...)- вызывает функцию немедленно, передавая аргументы по одному через запятую.
Пример:func.call(obj, 1, 2); -
apply(thisArg, [argsArray])- вызывает функцию немедленно, но аргументы передаются в виде массива (или массивоподобного объекта).
Пример:func.apply(obj, [1, 2]); -
bind(thisArg, arg1, arg2, ...)- не вызывает функцию, а возвращает новую функцию с привязаннымthisи, опционально, частично заданными аргументами (каррирование). Вызвать её можно позже.
Пример:const boundFunc = func.bind(obj, 1); boundFunc(2);
Ключевые отличия:
-
callиapplyвыполняются сразу,bind- отложенно. -
callпринимает аргументы списком,apply- массивом. -
bindсоздаёт копию функции с фиксированным контекстом, что удобно для колбэков и событий.
Пример использования в Node.js:
JAVASCRIPTconst obj = { name: 'Node' };function greet(greeting, punctuation) {console.log(`${greeting}, ${this.name}${punctuation}`);}greet.call(obj, 'Hello', '!'); // Hello, Node!greet.apply(obj, ['Hi', '?']); // Hi, Node?const bound = greet.bind(obj, 'Hey');bound('.'); // Hey, Node.
> Похожие задачи по JavaScript
Какие инструменты и подходы CI/CD вы применяли
Что такое Dependency Injection (DI)
Что такое протокол HTTP и как он работает
Какие подходы и стратегии кэширования существуют в Node.js для улучшения производительности работы с базами данных
> Похожие задачи по frontend
Как предотвратить двойной заказ при двойном клике на кнопку?
Как реализуется инкапсуляция в JavaScript
Что такое паттерн Singleton
Что такое протокол HTTP и как он работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью