js 对象去引用的方式?

大数据量下 深拷贝 的开销太大了,有没有高效的 去引用 方案呢

阅读 2.2k
2 个回答

我也在思考这个问题。目前除了第三方库实现的深克隆,就是不可变数据。但是所谓的不可变,本质上也是使用更高效的克隆方式或者更细粒度的去控制哪些数据可以共享,哪些需要存入新的数据结构,效率上也是和数据有关的,比如Immutable.js, Immer.js这些库。

如果纯粹只是需要返回一个完全去引用的对象来代替第三方的深克隆,可以试试最新的API structuredClone,原生支持的哦,不过Chrome版本要求98以上:structuredClone

如果浏览器不支持,可以使用polyfill: structured-clone

和第三方库的效率比怎么样我没测过,但是理论上应该更快,因为是原生的API,底层已经决定它会更快了。

其实最好的是在写组件的时候就把组件数据的深度控制在2层以内。

太深的数据深度就算前期解决了深浅拷贝的问题,后期还是会出现拷贝数据合并的问题。

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