一、浅拷贝
1.1、浅拷贝指只拷贝一层,更深层次级别的只拷贝引用
<script>
var obj = {
	id: 1,
	name: 'andy'
	msg:{
		age: 16
	}
} 
var o = {
	for(var k in obj) {
		// k 是属性名 obj[k]是属性值
		// 将对象obj中的值拷贝给对象o
		o[k] = obj[k]
	}
}
console.log(o) 
o.msg.age = 20
console.log(obj) // 当改变o中的age时obj中的age = 20
// 浅拷贝语法糖
// Object.assign(target,...sources)
Object.assign(o,obj) // 将obj拷贝给o 
</script>
备注: 浅拷贝当遇见深层次的拷贝时只会将地址拷贝(而不是开辟新的地址)
二、深拷贝
2.1、深拷贝拷贝多层,每一级别的数据都拷贝
<script>
var obj = {
	id: 1,
	name: 'andy'
	msg:{
		age: 16
	}
}
var o = {};
// 封装函数
function deepCopy(newobj,oldobj) {
	for(var k in oldobj) {
		// 判断我们的属性值属于那种数据类型
		// 1、获取属性值 
		var item = oldobj[k]
		if(item instanceof Array) {
			oldobj[k] = []
			deepCopy(newobj[k],item)  // 函数递归,将item的值赋值给newobj
		} else if(item instanceof Object) {
			oldobj[k] = {}
			deepCopy(newobj[k],item)  // 函数递归,将item的值赋值给newobj
		}else {
			newobj[k] = item
		}
	}
} 
deepCopy(o,obj)
</script>
                                    来源:CSDN
作者:六月七星
链接:https://blog.csdn.net/qq_42550235/article/details/104416474