深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。
深拷贝的三种实现方式分别是:1、递归递归去复制所有层级属性;
2、用JSON对象的parse和stringify实现;
3、借用JQ的extend方法。
缺点:仅支持 JSON 所支持的数据类型和结构
浅拷贝是指拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的时候,指向这个内存空间的所有指针需要重新定义,不然会造成野指针错误。
浅拷贝的实现方式是
1,通过拷贝构造方法实现浅拷贝
2,通过重写clone()方法进行浅拷贝
浅拷贝的优点在于拷贝的效率非常快
缺点:1对象中不能有函数
2对象中不能有undefined
深拷贝和浅拷贝的区别:浅拷贝主要是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝需要不但对指针进行拷贝,并对指针指向的内容进行拷贝,经过深拷贝后的指针是指向两个不同地址的指针。