浅拷贝
function shallowCopy(obj){
const cloneObj = {}
for(let i in obj){
if(obj.hasOwnProperty(i)){
cloneObj[i] = obj[i]
}
}
return cloneObj
}
let preson = {
name:'张三',
age:18
}
let preson1 = shallowCopy(preson);
深拷贝
只要对一个对象无限递归进行浅拷贝,最终的结果就是一个深拷贝。
function deepClone(obj) {
const cloneObj = new obj.constructor()
if (obj === null) return obj
if (obj instanceof Date) return new Date(obj)
if (obj instanceof RegExp) return new RegExp(obj)
if (typeof obj !== 'object') return obj
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
cloneObj[i] = deepClone(obj[i])
}
}
return cloneObj
}