Приходилось пользоваться методами call, apply и bind? Объясни их назначение и различия.

Ответ и пояснения приведены в подробном разборе ниже.

Короткий ответ

Что ответить на собеседовании

Ответ и пояснения приведены в подробном разборе ниже.

Подробный разбор

Ответ с пояснениями

Метод Назначение Передача аргументов Возвращаемое значение
call Вызывает функцию с заданным контекстом this и отдельными аргументами. Передаются как отдельные аргументы после контекста this. Результат выполнения функции.
apply Вызывает функцию с заданным контекстом this и аргументами, переданными как массив. Передаются как массив (или псевдомассив) после контекста this. Результат выполнения функции.
bind Возвращает новую функцию, которая при последующем вызове будет иметь заданный контекст this и, при необходимости, предварительно переданные аргументы. Передаются как отдельные аргументы после контекста this при вызове bind. Новая функция с привязанным контекстом и аргументами.
// Пример использования call
const obj = { name: 'Alice' };
function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}
greet.call(obj, 'Hello', '!'); // Выведет: Hello, Alice!
// Пример использования apply
const obj2 = { job: 'Developer' };
function describe(title, company) {
  console.log(`I am a ${title} at ${company}.`);
}
const args = ['Frontend', 'TechCorp'];
describe.apply(obj2, args); // Выведет: I am a Frontend at TechCorp.
// Пример использования bind
const obj3 = { city: 'New York' };
function showLocation() {
  console.log(`My city is ${this.city}.`);
}
const boundShowLocation = showLocation.bind(obj3);
boundShowLocation(); // Выведет: My city is New York.

// Пример bind с предварительным аргументом
const obj4 = { value: 10 };
function addValue(num) {
  console.log(this.value + num);
}
const boundAddFive = addValue.bind(obj4, 5);
boundAddFive(); // Выведет: 15

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку