function deepCopy(target) {
// 深拷贝不一定拷贝的都是对象,可以拷贝任何东西
// 只有数组和对象需要递归获取,其它直接返回
const type = Object.prototype.toString.call(target)
if(type !== '[object Object]' || type !== '[object Array]' || type === '[object Null]'){
return target
}
// 经过上面的判断,这里的就都是对象了(对象和数组)
let newObj
if(Object.prototype.toString.call(target) === '[object Object]'){
newObj = Object.create(null)
} else {
newObj = []
}
Object.keys(target).forEach(key => {
if(target.hasOwnProperty(key)){
newObj[key] = deepCopy(target[key])
}
})
return newObj
}
直接上代码,感觉也没什么可说的;就是判断值是不是对象或数组,是的话递归;