js 手写深拷贝

时间:2021-03-06 14:35:25   收藏:0   阅读:0

简单需求的话:直接 JSON.parse(JSON.stringify(someobj))

复杂需求的话:实现一个”完美“的深拷贝,只能求教上百行代码的 Lodash.cloneDeep() 了

面试够用版:

function deepClone(someobj){
    let cloneObj;
    //简单数据类型时
    if(typeof someobj!=‘object‘){ cloneObj=someobj}
    else if(someobj&&typeof someobj==‘object‘){
         cloneObj=Array.isArray(someobj)?[]:{};
         //遍历对象属性
         for(let key in someobj){
              //过滤掉对象原型上的属性
              if(someobj.hasOwnPrototype(key)){
                   if(someobj[key]&&typeof(someobj[key])==‘object‘){
                        cloneObj[key]=deepClone(someobj[key]);
                   }
                   else{
                       cloneObj[key]=someobj[key]
                   }
              }
         }
    }
    return cloneObj;
}

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!