> Что такое call, apply и bind в JavaScript и в чем их разница (JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Kvando Technologies, ООО Премиум ИТ Солюшен, IT-One, EPAM, Exness, TYMY, Globaldrive

Стек: JavaScript

> Пример ответа

call, apply и bind - это методы функций в JavaScript, которые позволяют явно задать контекст this и, при необходимости, передать аргументы.

call вызывает функцию немедленно, передавая контекст первым аргументом, а затем список аргументов через запятую:

JAVASCRIPT
function greet(greeting, punctuation) {
console.log(greeting + ', ' + this.name + punctuation);
}
const user = { name: 'Анна' };
greet.call(user, 'Привет', '!'); // "Привет, Анна!"

apply работает аналогично, но принимает аргументы в виде массива (или массивоподобного объекта) вторым аргументом:

JAVASCRIPT
greet.apply(user, ['Здравствуйте', '?']); // "Здравствуйте, Анна?"

bind не вызывает функцию сразу, а возвращает новую функцию с навсегда привязанным контекстом и, опционально, частично заданными аргументами (каррирование):

JAVASCRIPT
const boundGreet = greet.bind(user, 'Хей');
boundGreet('.'); // "Хей, Анна."

Основные различия:

  • call и apply выполняют функцию немедленно, bind - возвращает новую функцию для последующего вызова.

  • call принимает аргументы списком, apply - массивом. bind может принимать аргументы как списком, так и частично.

  • bind особенно полезен для создания функций с фиксированным контекстом (например, в обработчиках событий или колбэках), чтобы избежать потери this.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью