js如何深度拷贝对象
时间: 2024-10-15 17:16:08 浏览: 24
在JavaScript中,深度复制对象是一项复杂的任务,因为JavaScript的对象本质上是引用类型,它们之间的属性共享同一个内存地址。以下是几种实现深度复制对象的方法:
1. 使用`JSON.parse()`和`JSON.stringify()`: 这种方法适用于只包含简单类型值的对象,例如没有循环引用的对象。首先将对象转换为JSON字符串,然后再解析回一个新的对象。
```javascript
function deepCopyJson(obj) {
return JSON.parse(JSON.stringify(obj));
}
```
2. 库方法:如`lodash`库中的`_.cloneDeep()`,或者`copy`和`extend`方法。
```javascript
const _ = require('lodash');
let copiedObj = _.cloneDeep(originalObj);
```
3. 自己实现递归遍历:这种方法通过递归检查每个属性并创建新的实例复制。
```javascript
function deepCopyObject(obj) {
if (obj instanceof Date) return new Date(obj);
if (obj instanceof RegExp) return new RegExp(obj);
if (obj === null || typeof obj !== 'object') return obj;
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
copy[key] = deepCopyObject(obj[key]);
}
return copy;
}
```
阅读全文