JavaScript事件术语

scr*_*key 9 javascript events

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

直到最近,我认为它们是同一个东西的不同名称:在事件发生时调用的函数.但是我最近阅读了一些内容,它将事件处理程序称为事件监听器绑定的DOM元素,这是有意义的.

Cha*_*ion 7

简而言之,语言本身并没有事件的概念.这些是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.

在DOM事件的上下文中,使用的接口是:

interface EventListener {
  void handleEvent(in Event evt);
};
Run Code Online (Sandbox Code Playgroud)

然后你注册一个这样的监听器:

target.addEventListener(type, listener, useCapture);
Run Code Online (Sandbox Code Playgroud)

以下是MDC的文档:

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.

所以它看起来像函数对象隐式实现EventListener以方便使用.

类比

事件处理程序视为给出邮件员指令.

我不想等你停下来所以我希望你把包裹交给我的配偶,这样他们就可以打开它了.

想想Event Listener等着看医生.

我会听你准备好看到我的通知.在那之前我会读一本杂志.

在一天结束时,虽然这些只是抽象

嘿,我希望你执行这段代码!

资源

事件处理程序

观察者模式