文件名称:ldx-clone:惰性深克隆,高性能的js克隆
文件大小:6KB
文件格式:ZIP
更新时间:2024-05-28 14:56:19
JavaScript
惰性深克隆,高性能的js克隆 传统的深拷贝做法 JSON.parse(JSON.stringify(data)) 递归浅拷贝 第一种做法存在一些局限,很多情况下并不能使用,因此这里就不提了;第二种做法一般是工具库中的深拷贝函数实现方式,比如 loadash 中的 cloneDeep。虽然这种做法能解决第一种做法的局限,但是对于庞大的数据来说性能并不好,因为需要把整个对象都遍历一遍。 使用proxy进行惰性深拷贝 其实 Immer 这个库就是用了这种做法来生成不可变对象的,接下来就让我们来试着通过 Proxy 来实现高性能版的深拷贝。 思路: 1.拦截 set,所有赋值都在 copy (原数据浅拷贝的对象)中进行,这样就不会影响到原对象。 2.拦截 get,通过属性是否修改的逻辑分别从 copy 或者原数据中取值。 3.最后生成不可变对象的时候遍历原对象,判断属性是否被修改过,也就是判断是否
【文件预览】:
ldx-clone-main
----rollup.config.js(487B)
----utils()
--------index.js(159B)
----lib()
--------index.js(2KB)
----README.md(2KB)
----.gitignore(17B)
----package-lock.json(8KB)
----package.json(386B)