1.基本数据类型赋值
2.数组与对象的赋值都叫做浅拷贝
3.解构赋值
针对一维数组和对象可以看作是深拷贝,多维的就是浅拷贝
4.JSON.parse(JSON.stringify(list)) 深拷贝,但是拷贝不了函数
//标准的深拷贝=>引用数据类型(数组,对象)
function deepClone(source){
//[]=>Array(基类){}=>Object
const targetObj=source.constructor === Array ? [] : {} ;
for(let keys in source){
if(source.hasOwnProperty(keys)){
if(source[keys] && typeof source[keys] === 'object'){
//维护层代码
targetObj[keys]=source[keys].constructor==Array?[]:{};
//递归
targetObj[keys]=deepClone(source[keys])
}else{
//基本数据类型直接赋值
targetObj[keys]=source[keys];
}
}
}
return targetObj
}
let objC={
ff:"name",
gg:1,
obj:{str:'111',age:12},
arr:[1,2,3,4],
hello(){
console.log("world")
}
}
let newObj=deepClone(objC);
newObj.ff="有钱不买收音机";
newObj.arr.push("就听老师吹牛逼")
console.log(objC,newObj)