JS 里三种途径比较深拷贝

什么是深拷贝
对比下面这几种:
直接赋值
对于一个对象来说,使用直接赋值的方式把一个对象赋值给另一个对象,之后对两个对象进行操作,两者会相互影响。
浅拷贝
使用 Object.assign(新对象,旧对象)
方法或者展开运算符,可以对对象进行浅拷贝。
对于对象里的第一层元素,确实是拷贝出了新的东西。
然而如果该对象里嵌套了数组或者对象,那对于子数组或者对象来说,仍然只是拷贝了地址过去。之后对子数组或者对象进行的操作,仍然会在新旧对象之间相互影响。
深拷贝
深拷贝能解决上面的这些问题。本文下面给出的代码,通过了三种方式:
- 自己写的递归函数
- 使用 JSON 字符串
- 使用 lodash 库函数
实现了对象的深拷贝。
值得注意的是,前两者并不能处理对象里的函数,而 lodash 库给出的_.cloneDeep(objects)
方法确实可以。
1 | <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script> |
- 标题: JS 里三种途径比较深拷贝
- 作者: 三葉Leaves
- 创建于 : 2025-06-07 00:00:00
- 更新于 : 2025-06-07 19:46:13
- 链接: https://blog.oksanye.com/fc19b561f44b/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论