javascript - Object.observe 和 Object.watch 有什么区别

标签 javascript watch object.observe

对象.观察:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch

对象.观察:http://wiki.ecmascript.org/doku.php?id=harmony:observe

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

最佳答案

有很多区别。

微任务与同步回调

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

当监听 DOM 上的变化时,出于同样的原因,变异事件被替换为变异观察者。 microtask 解决方案比同步回调更高效。

标准与非​​标准

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

意图

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

关于javascript - Object.observe 和 Object.watch 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327029/

相关文章:

angularjs - 模型属性更改时不会调用 $watch

javascript - React Native WebView postMessage 不起作用

javascript - Grunt-contrib-sass 不适用于指南针

javascript - jscript - 获取目录中的文件列表

node.js - grunt watch 任务阻塞命令行

javascript - 使用 AngularJS ngModel 和表单验证 $watch 两个元素并在任一输入更改时测试它们是否相等

javascript - Object.observe 并不总是为我提供数组上正确的已删除索引

angular - Object.observe 退出和 RxJS 和 Angular 2

javascript - JS显示的列表