Как браузер узнает, что e (или золотая рыбка) относится к объекту события?

1

Я использую events в javascript в течение 4 лет, но теперь я только начинаю подробно узнавать о событии.

Я понимаю, что объект события имеет 10 свойств:

  • bubbles
  • cancelable
  • currentTarget
  • defaultPrevented
  • eventPhase
  • isTrusted
  • target
  • timeStamp
  • type
  • view

и каждое из этих свойств можно получить в рамках функции, связанной с событием, используя:

  • e.bubbles
  • e.cancelable
  • e.currentTarget
  • и т.п.

Но мой вопрос: когда прослушиватель событий запускает функцию:

function myFunction(e) {

   [... CODE HERE...]

}

Как браузер знает, что e относится к объекту события?

Я понимаю, что любое имя может представлять объект события - e или event или goldfish или что-то еще... но как браузер знает, какой из параметров функции является объектом события?

  • 0
    потому что это первый ..... как спецификация. dom.spec.whatwg.org/#callbackdef-eventlistener
  • 0
    Я всегда предполагал, что @epascarello всегда является первым параметром, переданным функции.
Показать ещё 5 комментариев
Теги:
events

1 ответ

2
Лучший ответ

Обработчик событий в основном является функцией обратного вызова. Это означает, что это invoker (в данном случае, прослушиватель событий), который определяет, к каким аргументам вызывается функция обратного вызова, и это функция обратного вызова, которая должна соответствовать этой спецификации.

По этой спецификации прослушиватель событий вызывает обработчик с объектом события в качестве первого аргумента. Всегда! Это означает, что функции обработчика событий должны быть записаны с пониманием того, что первым аргументом всегда будет объект события. То, что обработчик события называет этим аргументом, полностью зависит от обработчика события, поскольку это имя является лишь локальной ссылкой на объект в любом случае.

То, что ожидает обработчик событий, на самом деле совершенно не имеет отношения к слушателю, который его вызывает, он не знает и не заботится. Другими словами, даже если обработчик ожидает более одного аргумента, эти другие аргументы будут не определены, когда обработчик будет вызван, если слушатель также не передаст больше аргументов, чем только объект события.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню