深拷贝:
就是复制一个对象或数组里面的所有层级,当原对象或数组变化时,新的不会变化。
代码:
// 定义深拷贝函数
function deepClone(source){
// 判断source为数组还是对象,赋给新的newSource
let newSource = source.contructor === Array ? [] : {}
// 遍历source
for(let key in source){
// 判断source里有无数据
if(source.hasOwnProperty(key)){
// 若里面数据不为空,并且类型是object,则进行递归,否则直接赋值
newSource[key] = source[key] && typeof source[key] === 'object' ? deepClone(source[key]) : source[key]
}
}
// 返回新的
return newSource
}
例子:复制arr数组
运行结果: