function deepClone(obj = {}) {
if (typeof obj != 'object' || obj == null) {
// obj为null 或者不是对象,直接返回
return obj
}
let result
// 判断obj是否是数组还是对象
if (obj intanceof Array) {
result = []
} else {
result = {}
}
for (let key in obj) {
/**
* 保证obj自身的属性,我们深拷贝拷贝的是数据,不是函数和方法,所以用
* hasOwnProperty()这个来检测
*/
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key])
}
}
return result
}
以上是深拷贝的完整代码