码迷,mamicode.com
首页 > Web开发 > 详细

js 手写深拷贝

时间:2021-03-06 14:35:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:==   对象属性   blob   lodash   rgb   oda   需求   amp   isarray   

简单需求的话:直接 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;
}

 

js 手写深拷贝

标签:==   对象属性   blob   lodash   rgb   oda   需求   amp   isarray   

原文地址:https://www.cnblogs.com/mili3/p/14487711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!