js对象的深度拷贝

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

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;
}get

相关文章
相关标签/搜索