js 深拷贝的方法有几种
时间: 2024-06-13 17:07:21 浏览: 83
js代码-js 深拷贝
在JavaScript中,实现深拷贝的方法有多种,以下是其中的三种方法:
1.使用JSON.parse()和JSON.stringify()方法进行深拷贝:
```javascript
let obj1 = {a: 1, b: {c: 2}};
let obj2 = JSON.parse(JSON.stringify(obj1));
obj1.b.c = 3;
console.log(obj1); // 输出:{a: 1, b: {c: 3}}
console.log(obj2); // 输出:{a: 1, b: {c: 2}}
```
2.使用递归函数进行深拷贝:
```javascript
function deepClone(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let result = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key]);
}
}
return result;
}
let obj1 = {a: 1, b: {c: 2}};
let obj2 = deepClone(obj1);
obj1.b.c = 3;
console.log(obj1); // 输出:{a: 1, b: {c: 3}}
console.log(obj2); // 输出:{a: 1, b: {c: 2}}
```
3.使用第三方库lodash的cloneDeep()方法进行深拷贝:
```javascript
const _ = require('lodash');
let obj1 = {a: 1, b: {c: 2}};
let obj2 = _.cloneDeep(obj1);
obj1.b.c = 3;
console.log(obj1); // 输出:{a: 1, b: {c: 3}}
console.log(obj2); // 输出:{a: 1, b: {c: 2}}
```
阅读全文