js 对象的深拷贝

我在这里就不多做文字的解释了,直接上源码

第一种:

     var obj={
          name:"1111",
           age:123,
           sex:200,
          arrTest:["233","3333",[90,9]]
     }

  var obj1={} 

        function deepClone(origin,target){
   	      var target=target||{},
        toStr=Object.prototype.toString,
        arrStr="[object Array]"; 
        for(var key in origin){
          if(origin.hasOwnProperty(key)){
 	      if(origin[key]!==null&& typeof(origin[key])=="object"){
 	        if(toStr.call(origin[key])==arrStr){
 		      target[key]=[];
 		      }else{
 		       target[key]={};
 		      }
 	          deepClone(origin[key],target[key])	
     	          }else{
     	          target[key]=origin[key]
      	      }
         }	 	
 	       }   	
    return target
      }

第二种:

    var obj={
     a:100,
     b:[1,2,3],
     c:{
        x:10
     },
      d:/^\d+$/
   }

 function deeClone(obj) {
     if(typeof obj!=='object') {
      return obj;
     }
     if(obj==='null') { 
      return null;
     }
     if(obj instanceof Date) {
       return new Date(obj);
     }
     if(obj instanceof RegExp) {
     return new RegExp(obj)
     }
    var newobj=new obj.constructor;
    for (var  key in obj) {
        if(obj.hasOwnProperty(key)) {
            newobj[key]=deeClone(obj[key])
        }
    }  
    return newobj;
  }
  let obj2=deeClone(obj)
posted @ 2019-12-28 16:06  蔺雨轩  阅读(137)  评论(0)    收藏  举报