JavaScript - 鼠标事件监听器中性能最佳的无操作?

时间:2016-07-28 23:59:12

标签: javascript performance event-handling event-delegation noop

上下文

我正在构建Redux应用程序,并希望clickmousemove事件处理程序根据应用程序状态进行更改。

为实现此目的,我计划将click和单mousemove个处理程序附加到document。这些将属于订阅Redux商店的范围,并且知道相关状态。

我看到了两种实现处理程序的策略:

  1. 对相关状态变量使用switch语句。必须为每个被解雇的事件调用此switch
  2. 引用内部(范围)scope._clickHandlerscope._moveHandler属性,每当状态更新时,它们都会换出它们的对象。
  3. 问题1:

    如果我选择策略2,我希望我的mousemove处理程序在大多数时间都不做任何事情。但mousemove被解雇了很多!什么是可以绑定到scope._moveHandler属性的性能最高的无操作函数?

    问题2:

    在最好的情况下(w / r / t问题1),假设策略1中使用的switch语句必须测试10到100个案例,策略2的性能是否比策略1更高?

    澄清

    在这种方法中,当事件触发时,将始终调用一个“委托”函数。该函数将根据状态属性执行不同的操作,方法是在switch中匹配该状态,或者仅通过将绑定为状态的不同“delegee”函数。

    问题1询问最佳无操作“delegee”函数,而问题2询问在switch回调中有一个大mousemove块导致的性能损失。

    如果我们作为一个社区同意@nnnnnn的直觉,function(){}与无操作一样好,我的问题就变成了:

    性能更差:无操作函数调用的开销,或switch块中的相等比较?

0 个答案:

没有答案