针对object 和 array,浅拷贝只复制一层对象的属性(如果是个对象,仅复制储存的地址)。深拷贝会递归复制所有层级。
    深拷贝在计算机中开辟了一块内存地址用于存放复制的对象,而浅拷贝仅仅是指向被拷贝的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。
    深浅拷贝 的主要区别就是:复制的是引用(地址)还是复制的是实例。

    浅拷贝:
    Object.assign(target, source);
    assign还可以合并对象
    深拷贝:
    1、JOSN.parse(JOSN.stringify(obj));

    2、递归复制:

    1. function deepCopyTwo(obj) {
    2. let objClone = Array.isArray(obj) ? [] : {};
    3. if (obj && typeof obj == 'object') {
    4. for (const key in obj) {
    5. //判断obj子元素是否为对象,如果是,递归复制
    6. if (obj[key] && typeof obj[key] === "object") {
    7. objClone[key] = deepCopyTwo(obj[key]);
    8. } else {
    9. //如果不是,简单复制
    10. objClone[key] = obj[key];
    11. }
    12. }
    13. }
    14. return objClone;
    15. }

    https://www.jianshu.com/p/fa97a0f08c37
    https://www.cnblogs.com/guorange/p/7134310.html
    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign