Назад к вопросам
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 создаёт новую функцию с привязанным контекстом для вызова позже.