小编Hak*_*gin的帖子

在Javascript中修改事件对象

在Javascript中,通常的理解是您不应修改您不拥有的对象。我理解并同意这些论点。尽管如此,我正在考虑为Event对象添加几个属性。首先,我会写一些背景知识以及它的含义,然后,我希望从您那里得到一些赞成和反对的明智反馈。

我编写了一个事件管理器,其中具有诸如addEvent,removeEvent等方法。触发事件时,我将调用处理程序,将事件对象传递给已注册事件侦听器的事件处理程序。

在传递事件对象之前,我将向事件对象添加几个属性。例如; “ hotKey”-带有可能的值,例如“ shift-c”,“ alt-d”或“ meta-a”。(最后一个对应于Window上的“ ctrl-a”和MacOS等上的“ cmd + a”。换句话说,根据操作系统的不同,它会正确匹配,并且处理程序的逻辑模式无需关心它是否处于打开状态哪个OS或什么是元密钥)

其含义是,由于所有必要的“ if-then”语句已由事件管理器执行(例如,在触发与键有关的事件时),因此处理程序代码变得更小。事件处理程序非常需要具有切换语句并执行有趣的操作。

除了hotKey属性之外,我还计划添加一些其他属性,主要是为了简化事件处理程序功能,从而消除事件处理程序通常执行的逻辑。为了避免命名大肠菌群,我可以在子对象中添加新属性。换句话说,这些属性不必是顶级属性。

我目前正在执行此操作,但我希望获得一些我可能没有想到的见解。

加成

问题是其他人如何看待下面的实现。这就要求传递给处理程序的事件对象需要修改。我问这个问题,因为我实际上正在修改一个我不拥有的对象...但是在这种情况下这样做有很多好处。

addEvent( document, "keyup", function(event) {
    switch (event.hotKey) {
        case 'meta-c':
            // code here
            break;
        case 'meta-a':
            // code here
            break;
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript events

5
推荐指数
1
解决办法
1312
查看次数

标签 统计

events ×1

javascript ×1