我在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
,或event
或goldfish
或其他任何名称......但浏览器如何< strong> 知道 哪个函数参数是事件对象?
答案 0 :(得分:2)
事件处理程序基本上是一个回调函数。这意味着它是调用者(在本例中是事件监听器),它指示调用回调函数的参数,它是必须符合此规范的回调函数。
根据它的规范,事件监听器使用事件对象作为第一个参数来调用处理程序。总是!这意味着必须编写事件处理函数,并理解第一个参数始终是事件对象。事件处理程序将此参数命名为完全取决于事件处理程序,因为该名称只是对象的本地引用。
事件处理程序所期望的实际上与调用它的侦听器完全无关,它不知道也不关心。换句话说,即使处理程序需要多个参数,当调用处理程序时,其他参数也将是未定义的,除非侦听器还传递的参数多于事件对象。