浅拷贝 只拷贝一层(拷贝简单数据类型)
深拷贝 拷贝多层(拷贝简单复杂数据类型)
浅拷贝:
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
},
color: ['pink', 'red']
}
var o1 = {}
Object.assign(o1, obj)
console.log(o1);
深拷贝:
方法1(闭包)
var o = {}
function deepCopy(target, source) {
//封装函数
for (var k in source) {
var item = source[k]
//获取属性
if (item instanceof Array) {
//判断这个属性是否属于数组
target[k] = []
deepCopy(target[k], item)
} else if (item instanceof Object) {
//判断这个属性是否属于对象
target[k] = {}
deepCopy(target[k], item)
} else {
//属于简单类型
target[k] = item
}
}
}
deepCopy(o, obj)
console.log(o);
方法2(JSON)
let newStr = jSON. stringify(obj);
let newObj = JSON.parse(newStr);