// 浅拷贝只拷贝最外一层,更深层次对象级别的只拷贝引用
// 深拷贝拷贝多层,每一级别的数据都会拷贝
var obj = {
id: 1,
name: 'tom',
msg:{
age: 18
},
color: ['pink', 'red'],
add: null
}
var o = {}
// -- 浅拷贝
// for(var key in obj){
// o[key] = obj[key];
// }
// es6 浅拷贝的语法糖
Object.assign(o, obj)
console.log(o)
// 封装函数 -- 深拷贝
var newCopy = {}
function deepCopy(newObj, oldObj) {
for(var key in oldObj){
// 判断数值的数据类型
var item = oldObj[key];
// 注意 先判断是否是数组,在判断是否是对象
// 判断 -- 数组
// 判断 -- 对象
// 判断 -- 简单数据类型
if(item instanceof Array){
newObj[key] = [];
deepCopy(newObj[key], item)
}else if(item instanceof Object){
newObj[key] = {}
deepCopy(newObj[key],item)
}else{
newObj[key] = item;
}
}
}
deepCopy(newCopy, obj)
console.log(newCopy)
// newCopy = JSON.parse(JSON.stringify(obj))