js对象的深度拷贝

//判断对象的类型 Array Object Function String Number .....

function getObjType(obj){
  return Object.prototype.toString.call(obj).slice(8,-1);
}

//拷贝对象

function deepClone(obj){
  var type = getObjType(obj), //获取类型
    temp = obj;
  if(typeof obj === 'object'){
    if(type === 'Array'){
      temp = [];
      obj.map((item,i) => temp.push(deepClone(item)));
    }else if(type === 'Object'){
      temp = {};
      for(let _name in obj){
        //忽略掉原型链上的属性
        if(obj.hasOwnProperty(_name)){
          temp[_name] = deepClone(obj[_name]);
        }
      }
    }
  }else{
    return temp;
  }
  return temp;
}

posted @ 2019-02-11 14:16  大棒子  阅读(291)  评论(0编辑  收藏  举报