多层对象深拷贝的方法代码示例
时间: 2024-03-13 17:16:46 浏览: 63
以下是一个多层对象深拷贝的方法代码示例,使用了递归的方式:
```javascript
function deepClone(obj) {
// 如果是非对象类型,直接返回
if (typeof obj !== 'object') {
return obj;
}
let newObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
// 递归拷贝对象的每个属性
newObj[key] = deepClone(obj[key]);
}
}
return newObj;
}
```
使用示例:
```javascript
const obj1 = {
name: 'John',
age: 30,
address: {
city: 'New York',
state: 'NY'
},
hobbies: ['reading', 'traveling']
};
const obj2 = deepClone(obj1);
console.log(obj2);
// 输出:{
// name: 'John',
// age: 30,
// address: {
// city: 'New York',
// state: 'NY'
// },
// hobbies: ['reading', 'traveling']
// }
// 修改 obj2 的属性值
obj2.name = 'Mary';
obj2.address.city = 'Los Angeles';
obj2.hobbies.push('swimming');
console.log(obj1);
// 输出:{
// name: 'John',
// age: 30,
// address: {
// city: 'New York',
// state: 'NY'
// },
// hobbies: ['reading', 'traveling']
// }
console.log(obj2);
// 输出:{
// name: 'Mary',
// age: 30,
// address: {
// city: 'Los Angeles',
// state: 'NY'
// },
// hobbies: ['reading', 'traveling', 'swimming']
// }
```
可以看到,修改 obj2 的属性值并不会影响到 obj1。
阅读全文