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

相關文章
相關標籤/搜索