浏览器如何知道e(或金鱼)引用事件对象?

时间:2018-01-18 13:13:33

标签: javascript events

我在javascript中使用events已有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,或eventgoldfish或其他任何名称......但浏览器如何< strong> 知道 哪个函数参数是事件对象

1 个答案:

答案 0 :(得分:2)

事件处理程序基本上是一个回调函数。这意味着它是调用者(在本例中是事件监听器),它指示调用回调函数的参数,它是必须符合此规范的回调函数。

根据它的规范,事件监听器使用事件对象作为第一个参数来调用处理程序。总是!这意味着必须编写事件处理函数,并理解第一个参数始终是事件对象。事件处理程序将此参数命名为完全取决于事件处理程序,因为该名称只是对象的本地引用。

事件处理程序所期望的实际上与调用它的侦听器完全无关,它不知道也不关心。换句话说,即使处理程序需要多个参数,当调用处理程序时,其他参数也将是未定义的,除非侦听器还传递的参数多于事件对象。