深拷贝和浅拷贝的区别:深拷贝和浅拷贝的使用场景是在复杂对象里,即对象的属性还是对象,
浅拷贝是指只复制一层对象,当对象的属性是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化
//深拷贝对象
function deepCopy(value){
    if(typeof value != 'object'){
        return value;
    }
    let o = value.constructor == Array ? [] :{};
    if(o instanceof Array){
        for(let key of Object.keys(value)){
            o[key] = deepCopy(value[key]);
        }
    }else{
        for(let i in value){
            o[i] = deepCopy(value[i]);
        }
    }
    return o;
}
let a=[11,[2,3,[4]],5,7,[9]];
let b = {
    a:{g:6},
    b:1,
    c:{
        d:{
            e:4
        },
        f:5
    }
}
let c = deepCopy(a);
let d = deepCopy(b);

//浅拷贝,只copy第一层的属性值,如果属性值是对象,则复制的是这个对象的引用。
function shallowCopy(src) {
  var dst = {};
  for (var prop in src) {
    if (src.hasOwnProperty(prop)) {
      dst[prop] = src[prop];
    }
  }
  return dst;
}

yuan_yuanxu
73 声望1 粉丝