首页 > 解决方案 > 是否有任何理由不在 JavaScript 中的 Event 对象上定义自定义属性?

问题描述

大多数情况下,有什么理由不在 JavaScript 中的 Event 对象上定义自定义属性吗?

我正在窗口对象上调度我自己的事件,并且我想向事件对象添加相关属性。

在 JavaScript 中为 Event 对象定义自定义属性是否令人不悦?皱眉还是鬼脸?

var infoEvent = new Event("info");
infoEvent.message = message;
infoEvent.referenceID = id;
window.dispatchEvent(infoEvent);

不保证有 ES5 或 ES6。

看起来在评论中建议了使用 CustomEvent 的替代方法。

标签: javascript

解决方案


不,你永远不应该在 DOM 对象上定义自定义属性。界面上有许多属性Event,即使你现在不与它们中的任何一个发生冲突,将来也可能会有更多的属性。请注意,已经有一个MessageEvent接口,甚至MediaKeyMessageEvent还有一个具有.message属性的接口。

将自定义数据附加到自定义 DOM 事件的正确方法是使用APICustomEvent并将数据放在其.detail属性上(您可以从构造函数初始化)。


推荐阅读