【发布时间】:2013-06-04 03:14:12
【问题描述】:
我使用委托机制寻找提高性能的线程。我说的是简单的 javascript,没有 jQuery 或其他工具/库。
每个元素都会在 DOM 树中产生事件,并通过冒泡机制在整个树中传播。
委托避免为每个元素创建一个事件处理程序,而是在单个处理程序中捕获更多事件。此外,停止冒泡,如果已经正确处理,处理程序可以避免事件进一步传播。因此它会减少页面的资源消耗。
但是,如果冒泡没有停止,事件会在整个 DOM 树中产生和传播,因此在使用委托与否的页面中存在相同的资源消耗。而且,如果委托的处理程序必须对事件的来源进行检查,那也会更加消耗......
那么,除了编程更容易、简单、干净之外,使用委托的性能提升在哪里?
有一种方法可以完全避免生成某些事件,或者完全避免某些元素产生某些事件,从而真正节省资源使用吗?例如,一个简单的文本,在鼠标悬停时,会在正常页面中生成许多无用的消息;如果不处理该消息,是否可以防止在源头生成?
【问题讨论】:
-
性能在 JavaScript 中很少是真正的问题。浏览器在用户阅读时大部分时间都处于空闲状态。大多数输入之间的时间以 10 秒或 100 毫秒(最多用于打字)为单位测量,性能上的微小差异(相当于 2-3 毫秒)并不是很明显。
标签: javascript performance delegation