4

Object.watch:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch _

Object.observe:http ://wiki.ecmascript.org/doku.php?id=harmony:observe

他们似乎都在高水平上做同样的事情。它们之间的显着区别是什么?

4

1 回答 1

2

有很多不同。

微任务与同步回调

一个区别是Object.observe当您进入消息循环时会进行回调。即,对对象的许多更改会导致包含所有更改的单个回调,而不是多个回调。

当监听 DOM 上的变化时,出于同样的原因,突变事件被突变观察者所取代。该microtask解决方案比同步回调更高效。

标准与非标准

此外,Object.observe它是 Ecmascript 7 的建议 Ecmascript 标准。即,它是建议的 Javascript 标准。

意图

Object.observe 旨在作为一种监视整个对象更改的高性能方式,并且该用例预计需要监听许多对象。这是 AngularJs 和 Polymer 等绑定框架(即客户端模板)的要求。Object.watch 更像是一个 Firefox 功能,用于监视特定属性,并且是从调试器功能中衍生出来的。

于 2014-06-24T19:48:18.047 回答