> Как вызвать функцию, чтобы this указывал на нужный объект, а не на window в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
В JavaScript this определяется тем, как вызывается функция. Чтобы явно задать контекст, используются методы call, apply и bind.
call- вызывает функцию с указаннымthisи аргументами через запятую:
JAVASCRIPTfunction greet(greeting) {console.log(`${greeting}, ${this.name}`);}const user = { name: 'Анна' };greet.call(user, 'Привет'); // "Привет, Анна"
apply- аналогиченcall, но аргументы передаются массивом:
JAVASCRIPTgreet.apply(user, ['Здравствуйте']); // "Здравствуйте, Анна"
bind- не вызывает функцию сразу, а возвращает новую функцию с навсегда привязаннымthis:
JAVASCRIPTconst boundGreet = greet.bind(user);boundGreet('Хай'); // "Хай, Анна"
Также в стрелочных функциях this не привязывается - он берется из внешнего лексического окружения. Если нужно сохранить контекст в обработчике событий или таймере, используйте bind или стрелочную функцию:
JAVASCRIPTbutton.addEventListener('click', () => {console.log(this); // this берется из родительской области видимости});
> Похожие задачи по frontend
Почему parseInt в JavaScript может возвращать NaN и как влияет второй аргумент
На какой стадии отрабатывают внешние нецелевые обработчики событий в DOM
Почему this равен window, а this.name выводит другое значение в JavaScript
Как предотвратить двойной заказ при двойном клике на кнопку?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью