Object.observe为何要被移除?

感觉是个不错的特性,竟然没有了
更新于: 2021-12-19 12:57:29

原因如下

有一篇文章解释了 O.o 要被移除提案的原因,里面就引用了这段话的部分内容。文章还说到Angular 2团队曾经实验性的使用了 O.o,但是因为性能原因最终放弃了。原因在于 O.o 的使用限制了很多 V8 中已有的优化,导致被 observed 的对象会比 non-observed 的对象慢得多。过多的上下文切换 (框架和浏览器之间) 会对异步的数据变化通知造成挑战,也很难对框架进行大幅性能优化 (macro-optimizations)。Polymer 团队的头也说用了 O.o 调试很诡异

总之基于种种原因,原生的 O.o 算是没戏了,已经在项目里用了或者想用这个特性的小伙伴可以找一些库支持,但是正如 O.o 作者说的,immutable.js 会是一个非常不错的选择!😛

总结

  • 限制了 v8的性能优化
  • 并且本身的性能有很大问题
  • 调试很诡异

参考

https://github.com/luokuning/blogs/issues/1

http://www.infoq.com/news/2015/11/object-observe-withdrawn