我也在思考这个问题。目前除了第三方库实现的深克隆,就是不可变数据。但是所谓的不可变,本质上也是使用更高效的克隆方式或者更细粒度的去控制哪些数据可以共享,哪些需要存入新的数据结构,效率上也是和数据有关的,比如Immutable.js, Immer.js这些库。如果纯粹只是需要返回一个完全去引用的对象来代替第三方的深克隆,可以试试最新的API structuredClone,原生支持的哦,不过Chrome版本要求98以上:structuredClone如果浏览器不支持,可以使用polyfill: structured-clone。和第三方库的效率比怎么样我没测过,但是理论上应该更快,因为是原生的API,底层已经决定它会更快了。
我也在思考这个问题。目前除了第三方库实现的深克隆,就是不可变数据。但是所谓的不可变,本质上也是使用更高效的克隆方式或者更细粒度的去控制哪些数据可以共享,哪些需要存入新的数据结构,效率上也是和数据有关的,比如
Immutable.js
,Immer.js
这些库。如果纯粹只是需要返回一个完全去引用的对象来代替第三方的深克隆,可以试试最新的API
structuredClone
,原生支持的哦,不过Chrome版本要求98以上:structuredClone如果浏览器不支持,可以使用polyfill: structured-clone。
和第三方库的效率比怎么样我没测过,但是理论上应该更快,因为是原生的API,底层已经决定它会更快了。