Проверяет понимание способов управления контекстом выполнения функции в JavaScript без изменения её исходного кода.
В JavaScript значение this внутри функции зависит от того, как она вызывается. По умолчанию в обычной функции this ссылается на глобальный объект (в браузере — window), а в строгом режиме — undefined. Однако часто нужно, чтобы функция работала с конкретным объектом, не переписывая её код.
Для этого существуют три встроенных метода: call, apply и bind. Они доступны у любой функции и позволяют явно указать, какой объект будет this.
call(context, arg1, arg2, ...) — вызывает функцию сразу, передавая аргументы по отдельности.apply(context, [args]) — вызывает функцию сразу, передавая аргументы массивом.bind(context) — возвращает новую функцию, у которой this навсегда привязан к указанному объекту, и её можно вызвать позже.const user = { name: 'Alice' };
function greet(greeting) {
return `${greeting}, ${this.name}`;
}
// call
console.log(greet.call(user, 'Hello')); // Hello, Alice
// apply
console.log(greet.apply(user, ['Hi'])); // Hi, Alice
// bind
const boundGreet = greet.bind(user);
console.log(boundGreet('Hey')); // Hey, AliceВ примере функция greet не изменяется, но благодаря call, apply и bind она получает доступ к свойству name объекта user.
call — когда аргументы известны заранее и их немного.apply — когда аргументы уже находятся в массиве (например, при работе с Math.max).bind — когда нужно создать функцию с фиксированным контекстом для последующего использования, например, в обработчиках событий или колбэках.Вывод: Использование call, apply и bind — стандартный способ управления контекстом в JavaScript. Это особенно полезно при работе с методами объектов, функциями высшего порядка и асинхронным кодом, где контекст может теряться.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию