原生 Js 实现深拷贝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function deepClone(param = {}) {
// 传入的参数不是对象和数组,或者是null,就直接返回
if (typeof param !== "object" || param === null) return param;

// 初始化返回结果
let result = Array.isArray(param) ? [] : {};

for (key in param) {
// 判断自身属性中是否存在该属性
if (obj.hasOwnProperty(key)) {
// 递归调用
result[key] = deepClone(param[key]);
}
}
return result;
}