【问题标题】:How are *custom* events in JavaScript actually implemented?JavaScript 中的 *custom* 事件是如何实际实现的?
【发布时间】:2011-04-14 16:53:27
【问题描述】:

据我了解,事件不是 EcmaScript 语言的一部分, 但在各种 DOM 规范和 DOM 实现中 引擎。通过阅读 DOM,我得到的印象是 事件是引擎内置的,你不能有自定义的。在 另一方面,像 jquery 这样的框架提供了定义 自定义事件。同样,您可以在服务器端拥有自定义事件 JavaScript 框架,例如 Node.js。

我试图对此做一些研究,我能得出的唯一结论 想出的是“自定义”事件实际上是抽象 在真正的(内置)事件上,框架以隐藏的方式处理 为特定目的而创建的 DOM 的一部分。

正确吗?如果不是,那么用户定义的 Evers 实际上是如何 用 JavaScript 实现?

【问题讨论】:

  • 这可能很有趣:w3.org/TR/DOM-Level-3-Events
  • 你的猜测基本正确。它要么是由运行时系统(node.js、现代 DOM)直接提供的东西,要么是在其之上的 JavaScript 层中完成的(像 jQuery 或 Prototype 这样的库)。

标签: javascript dom javascript-events event-handling


【解决方案1】:

DOM 事件规范(v2v3)提供了一种通过 createEventdispatchEvent 等方法创建和调度事件的方法。这是 DOM 的东西,而不是 JavaScript 的东西。 (JavaScript 围绕函数的各种特性——它们是closures、作为一等对象等等——使得通过观察者风格的模式实现事件变得非常容易,但这是一个不同的话题。)

【讨论】:

  • 您好 TJ,您有关于如何“通过观察者样式模式实现事件”的链接吗?
  • @Kay:你是说非 DOM 的东西?
【解决方案2】:

This article 深入讨论了这个问题,并为围绕现有 dom 事件构建“抽象”提供了一个非常可靠的解决方案。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2012-08-18
    • 2013-07-16
    • 2019-03-13
    相关资源
    最近更新 更多