Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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事件术语_Javascript_Events - Fatal编程技术网

JavaScript事件术语

JavaScript事件术语,javascript,events,Javascript,Events,事件处理程序和事件侦听器之间有什么区别 直到最近,我还认为它们是同一事物的不同名称:一个在事件发生时调用的函数。但我最近读到一篇文章,称事件处理程序为事件侦听器绑定到的DOM元素,这很有意义。在JavaScript上下文中,我倾向于互换使用它们。我认为大多数JavaScript开发人员会认为它们是同一个东西:一个在特定事件发生时被调用的函数。如果将事件的目标DOM节点称为“事件处理程序”,我和其他人都会感到困惑 编辑 “事件侦听器”在上下文中具有特定含义。事件目标(如元素)的addEventLi

事件处理程序和事件侦听器之间有什么区别


直到最近,我还认为它们是同一事物的不同名称:一个在事件发生时调用的函数。但我最近读到一篇文章,称事件处理程序为事件侦听器绑定到的DOM元素,这很有意义。

在JavaScript上下文中,我倾向于互换使用它们。我认为大多数JavaScript开发人员会认为它们是同一个东西:一个在特定事件发生时被调用的函数。如果将事件的目标DOM节点称为“事件处理程序”,我和其他人都会感到困惑

编辑

“事件侦听器”在上下文中具有特定含义。事件目标(如元素)的
addEventListener
removeEventListener
方法的
listener
参数属于
EventListener
类型,指定为包含单个
handleEvent
方法的接口。但是,JavaScript没有接口的概念,在中,它指定:

对象事件侦听器 这是一个ECMAScript函数引用。此方法没有返回值。该参数是一个事件对象

因此,在JavaScript中,事件侦听器显然是在事件发生时调用的函数

“事件处理程序”在中也有提及,在(强调部分)中有提及:

1.3.2。与HTML 4.0事件侦听器的交互 ... 为了实现与HTML 4.0的兼容性,实现者可以将表示事件处理程序的属性设置视为在EventTarget上创建和注册EventListener


显然,这两个术语在JavaScript世界中的含义基本相同。

非常清楚,语言本身没有事件的概念。这些是DOM的一部分

Event Handler: An asynchronous callback that is invoked when an event is raised. Event Listener: An object that implements an interface and has events "pushed" to it. 然后注册一个侦听器,如下所示:

target.addEventListener(type, listener, useCapture);
以下是以下文件:

侦听器: 当指定事件发生时接收通知的对象 类型发生。这必须是实现EventListener接口的对象, 或者只是一个JavaScript函数。 因此,函数对象似乎隐式实现了EventListener,以便于使用

类比

将事件处理程序视为向邮递员发出指令

我不想等你 我想让你把包裹给我的配偶 这样他们就可以打开它了

将事件侦听器视为等待看医生

我会听着你准备好见我的通知。在那之前,我要读一本杂志

但归根结底,这些仅仅是对

嘿,我要你执行这个代码

资源


@chaospanion-这对我没有帮助,因为您正在使用Java代码示例,我的问题与JavaScript术语有关,但感谢您花时间回答。@Nick-这是针对JavaScript的。DOM文档只是用一般术语描述接口。@chaospanion-Doh!我有点胖,所以你得原谅我。为什么一个“事件处理程序”异步?关于能够将包含
handleEvent
方法的对象传递到
addEventListener
中,这一点很好:我完全忘记了这一点。我总是交替使用它们,但我读了一篇关于事件委派的文章,其中一个表捕获了发生在它上面的所有单击事件,并且它们引用了它们作为处理程序添加到表中,然后调用event listener.OK。我认为这是一个不寻常的用途。你有那篇文章的URL吗?没有。我知道这不是很有帮助,但我找不到我在哪里读的,因为那是很久以前的事了。我在一个TODO列表中列出了要问这个问题的人。规范所说的是,诸如
onload=“func();”
之类的属性相当于
document.getElementById(“id”).addEventListener(“onload”),{handleEvent:function(evt){func()},假)好的,规范的这一部分似乎确实在特别讨论属性,所以这可能并没有真正澄清事件处理程序。但是,
EventListener
仍然被指定为ECMAScript中的函数对象,而不是具有
handleEvent
方法的对象。请阅读此内容
target.addEventListener(type, listener, useCapture);
listener: The object that receives a notification when an event of the specified type occurs. This must be an object implementing the EventListener interface, or simply a JavaScript function.