2013-09-28 51 views
2

我有一个关于JavaScript效率的问题。我想创建一个监视特定成员的“监视器”,并在更改时执行一个函数。我已经看到了两种方法:效率 - setInterval vs Object.watch

1)我已阅读,连续地对电流值的旧的值进行比较,并触发回调时,有一个变化

2)Object.watch

设定的间隔该Object.watch创造了一些开销,但我很好奇哪种方法是最有效的?如果还有其他方法,请随时通知我!

+0

您编写和执行的所有代码“会产生一些开销”。你有没有一个实际的性能问题?如果没有,请选择导致正确代码更容易的地方。如果说“X比Y更有效率”,当它们都是完全不同的机制,具有不同的性能特征时,碰巧完成相同的事情几乎是无意义的。 – millimoose

+0

呵呵,实际上不是,它不是“无意义的”。对于样板代码,算法非常重要。否则,当你在其上构建时,最终会产生O(n^x)的复杂性。 –

+0

你并不是在编写一个算法,而且这不是一个关键的代码路径,当差别可能是'O(n)'中'n'的不同值时,namedropping指数复杂性过于夸张,唯一的信息你有“我读了一些开销”,整个事情可能与其他代码相比可以忽略不计。启动更改通知的机制可能比基于该通知的任何操作都要小得多。 – millimoose

回答

2

您也可以将该成员封装在更新函数中,该函数在设置新值后触发事件,并在代码中的其他位置侦听事件。这将是非常有效的。

+0

这是一个更好的方法。 –

+1

这工作。我将简单地设计框架的这一部分,以使用键值对接口来设置成员。 –

0

(旁注:你应该使用Object.observe()作为Object.watch()是FF特定)

如果这是关于特定属性则是在许多意义上使用虚拟财产的机制和提供自己制定者更好。检查Object.defineProperty

+0

这是一个更通用的锅炉板功能。 –