1. 程式人生 > >js通過一個方法實現對象的深淺拷貝。

js通過一個方法實現對象的深淺拷貝。

str else xtend color extend log typeof ror defined

眾所周知,對象的深淺拷貝是工作中肯定會遇到的問題。所以,今天考慮寫個小的功能來記錄一下

//type:boolean,true-deep,true為深拷貝,
function extendCopy(type,item){
  if(typeof type != "boolean" || typeof item !=‘object‘){
     return  
  }
var newObj = item.constructor ==="Array" ?[]:{};
  if(type){
     if(window.JSON){
          return JSON.parse(JSON.stringify(item));
     }  
     
else{ for(prop in item){ if(getType(item[prop]) ==‘array‘ || getType(item[prop]==“object”)){ newObj[prop]= extendCopy(type,item[prop]); } else{ newObj[prop] = item[prop]; } } } } else{ for (prop in
item){ newObj[prop] = item[prop]; } return newObj; } } //實現js內置類型的檢測 function getType(o){ var _toString=Object.prototype.toString; var _type={ "undefined":"undefined", "number":"number", "boolean":"boolean", "string":"string",
"[object Function]":"function", "[object Array]":"array", "[object RegExp]":"regexp", "[object Date]":"date", "[object Erroe]":"error" } return _type[typeof o]||_type[_toString.call(o)]||(o?"object":"null"); }

js通過一個方法實現對象的深淺拷貝。