Javascript 多个函数与更大的函数

标签 javascript

如果我有 10 个按钮,我是否最好有一个事件监听器指向每个按钮并调用不同的函数:

hdlButton1.addEventListener("click", fButton1Clicked);
hdlButton2.addEventListener("click", fButton2Clicked);
etc.

function fButton1Clicked(event) {
    //code to execute upon button 1 click
}
function fButton2Clicked(event) {
    //code to execute upon button 1 click
}

或者让所有点击都指向一个函数:

 document.addEventListener("click", fButtonClick);

 function fButtonClick(event) {
     switch (event.target.id) {
         case "btn1":
              //code to handle button 1 click
              break;
          case "btn2":
              //code to handle button 2 click
              break;
        }
}

使用多个函数来处理各种事件与使用单个函数来区分事件并进行适当处理相比,对性能有何影响?

(谢谢)

最佳答案

从性能的 Angular 来看,始终建议尽可能少的监听器,尤其是当您动态添加/删除附加了监听器的按钮或元素时。

你在第二种情况下所做的叫做event delegation ,当您动态创建元素并且希望在添加监听器后创建的节点上触发监听器时,它非常有用。

除非您的高性能应用(例如游戏)需要性能差异,否则性能差异不会很明显,因此您通常应该选择更具可读性的内容,或者如果您有动态变化的元素,则使用委托(delegate)。

我实际上创建了一个小型库来更轻松地为创建的元素实现事件委托(delegate):https://github.com/Cristy94/dynamic-listener

关于Javascript 多个函数与更大的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55250497/

相关文章:

javascript - 将错误消息应用于文本框

javascript - 刷新 jquery 中的 ui-Dialog 弹出窗口

javascript - 为什么我的函数之间的 setTimeouts 不起作用?

javascript - DIV 内容根据 URL 隐藏/显示

javascript - 将 id 放入父元素

javascript - 使用 Javascript 闭包完成处理程序的 Parse.com 查询查找不显示结果

javascript - RequireJS:多个 main.js?

javascript - 单击菜单容器外部时如何防止页面滚动和关闭菜单

php - 什么时候应该在动态类型语言中使用 null?

JavaScript 从选定的对象 ID 数组中获取索引