Sobes.tech
Назад к вопросам
Middle
2

Как можно задать контекст функции? В чём отличие call, apply и bind?

Компании, где спрашивали
X-Notes

Ответ от нейросети

sobes.tech AI

В JavaScript контекст функции (значение this) можно задать явно с помощью методов call, apply и bind.

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

Пример:

function greet(greeting) {
  console.log(`${greeting}, меня зовут ${this.name}`);
}

const person = { name: 'Иван' };

greet.call(person, 'Привет');       // Привет, меня зовут Иван

greet.apply(person, ['Здравствуйте']); // Здравствуйте, меня зовут Иван

const boundGreet = greet.bind(person);
boundGreet('Хай');                  // Хай, меня зовут Иван

Таким образом, call и apply вызывают функцию сразу с заданным контекстом, а bind создаёт новую функцию с привязанным контекстом для вызова позже.