深度克隆

JSON.parse(JSON.stringify(obj))

function deepClone(obj) {
  return JSON.parse(JSON.stringify(obj)) 
}

缺点:值是 undefined 和 function 的时候,会被忽略

    function deepClone(obj) {
      return JSON.parse(JSON.stringify(obj)) 
    }
    
  var obj = {a: undefined,b : function() {
      console.log(2)
    }};

  console.log(deepClone(obj))

对象深拷贝

判断是否为复杂类型

function deepClone(obj){
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            if(obj.hasOwnProperty(key)){
                if(obj[key]&&typeof obj[key] ==="object"){
                    objClone[key] = deepClone(obj[key]);
                }else{
                    objClone[key] = obj[key];
                }
            }
        }
    }
    return objClone;
}