> Что такое call, apply и bind в JavaScript и в чем их разница (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Kvando Technologies, ООО Премиум ИТ Солюшен, IT-One, EPAM, Exness, TYMY, Globaldrive
Стек: JavaScript
> Пример ответа
call, apply и bind - это методы функций в JavaScript, которые позволяют явно задать контекст this и, при необходимости, передать аргументы.
call вызывает функцию немедленно, передавая контекст первым аргументом, а затем список аргументов через запятую:
JAVASCRIPTfunction greet(greeting, punctuation) {console.log(greeting + ', ' + this.name + punctuation);}const user = { name: 'Анна' };greet.call(user, 'Привет', '!'); // "Привет, Анна!"
apply работает аналогично, но принимает аргументы в виде массива (или массивоподобного объекта) вторым аргументом:
JAVASCRIPTgreet.apply(user, ['Здравствуйте', '?']); // "Здравствуйте, Анна?"
bind не вызывает функцию сразу, а возвращает новую функцию с навсегда привязанным контекстом и, опционально, частично заданными аргументами (каррирование):
JAVASCRIPTconst boundGreet = greet.bind(user, 'Хей');boundGreet('.'); // "Хей, Анна."
Основные различия:
-
callиapplyвыполняют функцию немедленно,bind- возвращает новую функцию для последующего вызова. -
callпринимает аргументы списком,apply- массивом.bindможет принимать аргументы как списком, так и частично. -
bindособенно полезен для создания функций с фиксированным контекстом (например, в обработчиках событий или колбэках), чтобы избежать потериthis.
> Похожие задачи по frontend
Что такое область видимости (scope) в JavaScript
Какие есть способы объявления функций в JavaScript и их особенности
В чем разница контекста this в стрелочной и декларативной функции в JavaScript?
В чем отличие null от undefined и когда их использовать в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью