用JavaScript实现深拷贝
时间: 2023-02-08 19:43:46 浏览: 100
JavaScript 中可以使用 JSON.parse(JSON.stringify(object)) 来实现对象的深拷贝。这种方法将对象转换成 JSON 字符串,再使用 JSON.parse() 方法转回对象,这样就可以得到一个新的对象副本。但是,这种方法不能处理函数、循环引用和 Date 类型。
另外还可以使用lodash库里面的 _.cloneDeep(obj) 函数来实现深拷贝
可以使用以下代码实现:
```
const originalObject = { a: 1, b: { c: 2 } };
const copiedObject = JSON.parse(JSON.stringify(originalObject));
```
相关问题
javascript实现深拷贝
深拷贝是指将一个对象完整地拷贝一份,不受原对象影响,可以通过以下几种方式实现:
1. 递归实现
```javascript
function deepClone(obj) {
let result = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
result[key] = deepClone(obj[key]);
} else {
result[key] = obj[key];
}
}
}
return result;
}
```
2. JSON序列化实现
```javascript
function deepClone(obj) {
return JSON.parse(JSON.stringify(obj));
}
```
但需要注意的是,JSON序列化无法处理函数、正则表达式等特殊类型的数据。
如何实现 JavaScript 的深拷贝?
可以使用递归或者迭代的方式来实现 JavaScript 的深拷贝。递归方式可以使用 JSON.parse(JSON.stringify(obj)),但是该方法无法拷贝函数、正则表达式等特殊对象。迭代方式可以使用循环遍历对象的每一个属性,然后递归拷贝每一个属性的值。可以使用第三方库如 Lodash 的 cloneDeep 方法来实现深拷贝。
阅读全文