Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器如何知道e(或goldfish)指的是事件对象?_Javascript_Events - Fatal编程技术网

Javascript 浏览器如何知道e(或goldfish)指的是事件对象?

Javascript 浏览器如何知道e(或goldfish)指的是事件对象?,javascript,events,Javascript,Events,我在javascript中使用events已经4年了,但我现在才开始详细了解事件对象 我知道事件对象有10个属性: 气泡 可取消 currentTarget defaultPrevented eventPhase 已受信任 目标 时间戳 类型 查看 这些属性中的每一个都可以在事件触发函数中通过以下方式访问: e.bubbles e.可取消 e.currentTarget 等等 但我的问题是,当事件侦听器触发函数时: function myFunction(e) { [... CO

我在javascript中使用
events
已经4年了,但我现在才开始详细了解事件对象

我知道事件对象有10个属性:

  • 气泡
  • 可取消
  • currentTarget
  • defaultPrevented
  • eventPhase
  • 已受信任
  • 目标
  • 时间戳
  • 类型
  • 查看
这些属性中的每一个都可以在事件触发函数中通过以下方式访问:

  • e.bubbles
  • e.可取消
  • e.currentTarget
  • 等等
但我的问题是,当事件侦听器触发函数时:

function myFunction(e) {

   [... CODE HERE...]

}
浏览器如何知道
e
指的是事件对象


我理解,任何名称都可以表示事件对象-
e
,或
事件
金鱼
或任何。。。但是浏览器如何知道哪些函数参数是事件对象呢?

事件处理程序基本上是一个回调函数。这意味着是调用程序(在本例中是事件侦听器)指定调用回调函数的参数,并且回调函数必须遵守此规范

根据其规范,事件侦听器以事件对象作为第一个参数调用处理程序。永远!这意味着在编写事件处理程序函数时,必须理解第一个参数始终是事件对象。事件处理程序的名称此参数完全取决于事件处理程序,因为该名称只是对对象的本地引用


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

因为它是第一个。。。。。规格如何。我一直假设与@epascarello相同,它只是传递给函数的第一个参数。是的,事件侦听器调用事件处理程序,它总是将事件对象作为第一个参数传递。可以但是,如果函数只有一个参数,而不是事件对象,该怎么办?如果函数有三个参数,但没有一个是事件对象呢?在每种情况下,javascript都在执行一个简单的检查,以查看事件对象是否被第一个参数引用?它不是由事件处理程序来决定传递什么参数,而是由事件侦听器调用处理程序来决定它调用哪些参数。编写事件处理程序时必须理解第一个参数始终是事件对象。