Javascript:最好调用一个事件处理程序执行多个事情,而不是调用多个事件处理程序,每个事件处理程序执行一项操作?

时间:2017-05-24 03:39:46

标签: javascript jquery events jquery-events

编辑:更具体地说,当我要求哪个更好时,我会说性能,因为我担心会扩大这种情况。如果你对这种或那种方式是否更好的做法有所评论,那么这也是受欢迎的,但我主要担心的是表现。

我一直在玩使用HTML和Javascript / jQuery编写视频游戏,我正在处理一种情况,即点击一个对象可以有多种效果,从打开菜单到播放动画到触发其他事件撤消以前的操作并删除其他事件处理程序。

我看待它的方式有两种主要方法可以处理它。我可以创建一个大事件处理程序来执行所有操作,并根据我在页面中监视的各种状态决定要执行的操作。 e.g:

$btn_Foo.on('click', function() {

    if(condition_A) {
        Do_Action_A();
    } else {
        Do_Action_B();
    }

    if(condition_B) {
        Do_Action_C();
    }

});

另一个是我将每个进程发送给可以关闭和打开的不同事件处理程序,并且状态检查可能只发生在每个单独的函数中。 e.g:

$btn_Foo.on('click', Do_Action_A);
$btn_Foo.on('click', Do_Action_C);

//In some other function
if(!condition_A) {
    $btn_Foo.off('click', Do_Action_A);
    $btn_Foo.on('click', Do_Action_B);
}

我更倾向于第二种选择,主要是因为我正在使用模块化和更灵活的设计构建我的javascript,但我担心的主要问题是拥有许多不同的事件处理程序可能会导致一些明显的性能问题。我可能在一个对象上有多达十几个这样的事件处理程序(并且至少有一百个这样的对象),所以我不知道调用多次事件处理程序的开销是否会产生重大影响。如果没有,那么我将选择2。

编辑2:在阅读了关于该主题的更多信息之后,我意识到提到我正在使用事件委托来附加事件处理程序是很重要的,因此关于事件附加到数千个元素的位可能不是问题。尽管如此,我最初担心的可能仍有十几个这样的事件处理程序。

0 个答案:

没有答案