封装一个深拷贝函数 可以实现数组 对象 函数的深拷贝
时间: 2024-05-07 19:18:24 浏览: 106
C++ 类的深拷贝
好的,以下是一个实现深拷贝的函数:
```javascript
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy;
if (Array.isArray(obj)) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy.push(deepCopy(obj[i]));
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
return copy;
}
```
这个函数首先判断传入的参数是否为对象或数组,如果不是则直接返回原值。如果是数组,则递归地对每个元素进行深拷贝,并将结果存入新的数组中。如果是对象,则递归地对每个属性进行深拷贝,并将结果存入新的对象中。最后返回拷贝后的对象或数组。
阅读全文