如何解释事件监听器究竟是什么?

时间:2015-10-12 14:35:30

标签: javascript event-handling

我正在撰写一篇关于JavaScript中事件处理的文章,虽然我认为我对DOM的事件模型有相对较好的理解,但我发现很难从技术角度描述事件监听器的概念观点!

方法addEventListener,如名称所示,通过获取三个参数将事件侦听器添加到给定对象,首先是事件的类型,第二个是回调,最后一个用于捕获是可选的,默认为false。 / p>

到目前为止,这么好,但你怎么回答这个问题,事件监听器究竟是什么

据我了解EventTarget接口的规范,必须有一些单独的接口EventListener,由回调继承,包含一个方法handleEvent,它将发生的Event作为参数,如果是事件类型和事件阶段匹配来自addEventListener方法调用的 somehow 存储的值,调用回调。

但即使这种解释是正确的,但它仍然不是一个模糊的描述,而是对引擎盖下发生的事情的精确解释。

我已经阅读了很多关于这个主题的文章和教程,但是他们似乎都把这个东西视为某种黑盒子,只是描述了表面上发生的事情而没有提供有关实际实现的细节。 / p>

因此,如果有人能够给我一个关于这种方法如何在内部工作的深刻解释,那就太棒了。

修改

好吧,似乎方法addEventListener实际上 是一个黑盒子,它的规范确实完全是实现依赖,所以可能没有办法说明这个模型是如何工作的。

有趣的是,如果你使用第二个参数调用addEventListener并且事件触发,那么Firefox会为属性 handleEvent 抛出一个不可调用的TypeError,而IE和Opera只是忽略了这一点。

但是,我认为这并不足以证明JavaScript中的每个函数都是从EventListener接口秘密继承此方法,只是在函数作为addEventListener方法的回调时调用。

所以它可能是,事件监听器实际上只是带有一些隐藏方法的回调,这些属性实现了处理传入事件所需的逻辑,但它也可以完全实现不同的方式...

0 个答案:

没有答案