Давайте посмотрим на следующий код:
const div = document.getElementById('foo');
div.addEventListener('click', function() {
console.log(this);
});
<div id="foo">click me</div>
Эта кнопка будет всегда регистрировать элемент dom, который я нажимаю. Я всегда знал, что это правда, и я знаю, что я могу использовать функцию стрелки здесь, чтобы сделать значение this
window
. Мы предполагаем, что синтаксис функции без стрелки для этого вопроса.
Насколько мне известно, значение this
получает свое значение в зависимости от того, как вызывается включающая функция. Обратный вызов этого прослушивателя событий определенно не вызывается для элемента dom.
По-моему, когда нажимается div
, он добавляет анонимную функцию в очередь сообщений. Когда очередь пуста, она вызывает анонимную функцию в глобальном контексте выполнения (возможно, я ошибаюсь).
Если именно в глобальном контексте выполнения вызывается эта анонимная функция, не должно ли значение this
быть окном?
Что возвращает нас к заглавному вопросу, почему значение this
в обратном вызове прослушивателя событий dom не равно window
? (Предполагая, что обратный вызов не является функцией стрелки)