Javascript 浏览器如何知道e(或goldfish)指的是事件对象?
我在javascript中使用Javascript 浏览器如何知道e(或goldfish)指的是事件对象?,javascript,events,Javascript,Events,我在javascript中使用events已经4年了,但我现在才开始详细了解事件对象 我知道事件对象有10个属性: 气泡 可取消 currentTarget defaultPrevented eventPhase 已受信任 目标 时间戳 类型 查看 这些属性中的每一个都可以在事件触发函数中通过以下方式访问: e.bubbles e.可取消 e.currentTarget 等等 但我的问题是,当事件侦听器触发函数时: function myFunction(e) { [... CO
events
已经4年了,但我现在才开始详细了解事件对象
我知道事件对象有10个属性:
气泡
可取消
currentTarget
defaultPrevented
eventPhase
已受信任
目标
时间戳
类型
查看
e.bubbles
e.可取消
e.currentTarget
- 等等
function myFunction(e) {
[... CODE HERE...]
}
浏览器如何知道e
指的是事件对象
我理解,任何名称都可以表示事件对象-
e
,或事件
或金鱼
或任何。。。但是浏览器如何知道哪些函数参数是事件对象呢?事件处理程序基本上是一个回调函数。这意味着是调用程序(在本例中是事件侦听器)指定调用回调函数的参数,并且回调函数必须遵守此规范
根据其规范,事件侦听器以事件对象作为第一个参数调用处理程序。永远!这意味着在编写事件处理程序函数时,必须理解第一个参数始终是事件对象。事件处理程序的名称此参数完全取决于事件处理程序,因为该名称只是对对象的本地引用
事件处理程序所期望的实际上与调用它的侦听器完全无关,它不知道也不关心。换句话说,即使处理程序需要多个参数,在调用处理程序时,这些其他参数也将是未定义的,除非侦听器也传递了比事件对象更多的参数。因为它是第一个。。。。。规格如何。我一直假设与@epascarello相同,它只是传递给函数的第一个参数。是的,事件侦听器调用事件处理程序,它总是将事件对象作为第一个参数传递。可以但是,如果函数只有一个参数,而不是事件对象,该怎么办?如果函数有三个参数,但没有一个是事件对象呢?在每种情况下,javascript都在执行一个简单的检查,以查看事件对象是否被第一个参数引用?它不是由事件处理程序来决定传递什么参数,而是由事件侦听器调用处理程序来决定它调用哪些参数。编写事件处理程序时必须理解第一个参数始终是事件对象。