浅拷贝是拷贝一层,深层次的对象级别的就拷贝引用;深拷贝是拷贝多层,每一级别的数据都会拷贝出来;
浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;
深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。
浅拷贝的实现
修改拷贝后的对象的属性时,原对象也会发生改变
深拷贝的实现
①手动复制
②object.assign({},原对象,原对象....) 参数1 目标对象 参数二 原对象,可以拷贝多个对象
如果只有一层,会实现深拷贝,
如果有嵌套,就是普通的浅拷贝
③转成JSON
用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象
缺陷是会破坏原型链,并且无法拷贝属性值为function的属性
④递归