JavaScript深拷贝
时间: 2023-01-28 17:15:34 浏览: 147
JavaScript 中有几种方法可以实现对象的深拷贝:
1. 使用 JSON 序列化和反序列化
这是一种比较简单的方法,但只能复制基本类型和可序列化的对象。如果对象中有函数、正则表达式等非可序列化的属性,将会丢失。
```
function deepClone(obj) {
return JSON.parse(JSON.stringify(obj));
}
```
2. 使用递归
递归的方法可以完全复制对象,但需要自己手动实现。
```
function deepClone(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let result;
if (Array.isArray(obj)) {
result = [];
} else {
result = {};
}
for (let key in obj) {
result[key] = deepClone(obj[key]);
}
return result;
}
```
3. 使用第三方库
还有一些第三方库,如 lodash 的 `_.cloneDeep` 方法,也可以实现深拷贝。
```
const _ = require('lodash');
function deepClone(obj) {
return _.cloneDeep(obj);
}
```
另外,还有一些其他的方法,比如使用 `Object.assign` 或扩展运算符 `...`,但这些方法只能复制对象的浅层属性,不能实现真正的深拷贝。
阅读全文