1.浅拷贝
两个或多个对象指向同一个内存地址,如果其中某个对象变量的值发生改变,另一个对象相应的值也会发送改变,

比如Object.assgin()合并多个对象,只要源对象里某个值是对象,则这个对象发生的任何改变就会在目标对象里有所体现

2.深拷贝
值和地址都复制,其中任意一个对象的值改变,另外的对象对应的值不会改变,
1)可以通过先转为JSON.stringify(),再转为JSON.parse()实现,但这个方法只能复制对象和数组,不能复制函数

缺点:会忽略undefined和symbol、不能序列化函数

2)jQuery中$.extend([deep],target, object1[,objectN])deep默认为false(浅拷贝),true是深拷贝,并且false不能显示的写出来

缺点:代价较大

3)递归循环

function deepClone(obj){
	let newObj={};
	for(var key in obj){
		if(Object.prototype.hasOwnProperty.call(obj,key)){
			if(typeof obj[key] == ‘object’)
				newObj[key]=deepClone(obj[key]);
			}else{
				newObj[key]=obj[key]
			}
	}
	return newObj;
}

缺点:不能拷贝函数