js 如何实现深拷贝
时间: 2023-07-18 21:16:28 浏览: 79
实现深拷贝可以使用递归的方式来遍历对象的所有属性,然后复制它们的值到一个新的对象中。以下是一个常见的实现方法:
```javascript
function deepCopy(obj) {
// 判断数据类型
if (typeof obj !== 'object' || obj === null) {
return obj;
}
// 判断对象类型
const type = Object.prototype.toString.call(obj).slice(8, -1);
let result;
switch (type) {
case 'Array':
result = [];
for (let i = 0; i < obj.length; i++) {
result.push(deepCopy(obj[i]));
}
break;
case 'Object':
result = {};
for (let key in obj) {
result[key] = deepCopy(obj[key]);
}
break;
default:
result = obj;
}
return result;
}
```
上面的 `deepCopy` 函数可以处理普通对象和数组,如果遇到嵌套的对象或数组,它将递归地调用自身来复制嵌套的数据。需要注意的是,该函数无法处理函数、正则表达式、Map、Set 等特殊类型的对象。
阅读全文