Как на собеседовании объяснить разницу между event.target и event.currentTarget?

область DOM-событий event.target — это элемент, на котором событие возникло изначально, то есть его источник event.currentTarget — элемент, чей обработчик в данный момент выполняет обработку события event.target может…

Короткий ответ

Что ответить на собеседовании

область DOM-событий event.target — это элемент, на котором событие возникло изначально, то есть его источник event.currentTarget — элемент, чей обработчик в данный момент выполняет обработку события event.target может указывать на вложенный дочерний элемент currentTarget отражает текущий обработчик во время фазы всплытия или погружения эти свойства позволяют разделить источник события и контекст обработки различие особенно важно при делегировании событий: оно показывает, на каком элементе произошло нажатие, если обработчик установлен на родительском элементе

Подробный разбор

Ответ с пояснениями

Как на собеседовании объяснить разницу между event.target и event.currentTarget?

  • область DOM-событий
  • event.target — это элемент, на котором событие возникло изначально, то есть его источник
  • event.currentTarget — элемент, чей обработчик в данный момент выполняет обработку события
  • event.target может указывать на вложенный дочерний элемент
  • currentTarget отражает текущий обработчик во время фазы всплытия или погружения
  • эти свойства позволяют разделить источник события и контекст обработки
  • различие особенно важно при делегировании событий: оно показывает, на каком элементе произошло нажатие, если обработчик установлен на родительском элементе

Пояснение: Когда пользователь нажимает на вложенный элемент, из-за всплытия события вызываются обработчики его родителей. Поэтому event.target — это наиболее глубоко расположенный элемент, по которому был выполнен клик, а event.currentTarget — элемент, обработчик которого исполняется в данный момент. Благодаря этому можно точно определить место возникновения события и этап его обработки в DOM-дереве.

Подробный ответ

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

В JavaScript свойства event.target и event.currentTarget принадлежат объекту события и нередко становятся источником ошибок. Свойство event.target обозначает элемент, на котором событие произошло фактически: например, по нему кликнули или на него навели указатель. В свою очередь, event.currentTarget ссылается на элемент, чей обработчик выполняется сейчас, то есть на элемент, к которому эта функция была привязана.

Ключевые моменты

  • event.target — самый вложенный элемент, ставший инициатором события. При всплытии он может не совпадать с currentTarget.
  • event.currentTarget — элемент, на котором в текущий момент обрабатывается событие и к которому подключён обработчик.
  • Разница становится особенно очевидной при использовании event delegation. В этом случае обработчик размещают на родительском элементе, а само событие возникает во вложенном элементе: target ссылается на этот вложенный элемент, тогда как currentTarget — на родителя, содержащего обработчик.

Практический контекст

Представим div, внутри которого находятся кнопки, а обработчик клика установлен на div. Если пользователь нажмёт кнопку, event.target будет ссылаться на кнопку, а event.currentTarget — на div. При делегировании это позволяет определить источник события и элемент, на котором выполняется его обработка.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку