用js写一个适用于各种场景的深克隆方法
时间: 2024-05-09 07:21:54 浏览: 13
好的,以下是使用JavaScript编写一个适用于不同场景的深克隆方法的示例代码:
```
function deepClone(obj) {
// 如果传入的对象不是Object类型,直接返回
if(typeof obj !== 'object' || obj === null) {
return obj;
}
// 判断obj的类型是数组还是对象
const isArray = Array.isArray(obj);
const cloneObj = isArray ? [] : {};
// 遍历obj的所有自有属性
for(let key in obj) {
// 排除继承属性
if(!obj.hasOwnProperty(key)) {
continue;
}
// 递归克隆子对象
cloneObj[key] = deepClone(obj[key]);
}
return cloneObj;
}
```
使用该方法时,只需要传入需要克隆的对象即可:
```
const obj = {
name: 'John',
age: 30,
address: {
city: 'New York',
country: 'USA'
},
hobbies: ['reading', 'swimming']
};
const cloneObj = deepClone(obj);
```
这样就可以得到一个深度克隆的对象cloneObj,与原对象互不干扰。