Object.freeze 对性能有什么提升吗?

阅读 2.2k
1 个回答

因为你贴的这篇文章是胡说八道的。

为了“解决”卡,用了 Object.freeze();然后“解冻”居然还能用 JSON.parse(JSON.stringify())??

能写出这么牛哔的写法也真是人才了。你可千万别学它,你需要的是 Immutable。


作者没有上下文语境,但我猜是是 Vue 2.X 项目。

Vue 2.X 实现数据监听和双向绑定依赖于遍历执行 Object.defineProperty 实现,当你的列表很大、再加上元素的对象属性比较复杂时,因为这个带来的开销就会很大。

所以用 Object.freeze 的作用是告诉 Vue 别去遍历执行 Object.defineProperty,省下了这部分开销。但带来的缺点是数据变化就不能自动刷新视图,需要你手动执行刷新操作。

而如果你这个列表不需要体现在视图上的话,压根就不应该放到 $data 里,也就不需要调用 Object.freeze 了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题