中易网

javascript深拷贝和浅拷贝的区别

答案:2  悬赏:0  
解决时间 2021-01-30 00:57
javascript深拷贝和浅拷贝的区别
最佳答案
所谓“深复制”,就是能够实现真正意义上的数组和对象的复制。它的实现并不难,只要递归调用”浅复制”就行了。
  function deepCopy(p, c) {
    var c = c || {};
    for (var i in p) {
      if (typeof p[i] === 'object') {
        c[i] = (p[i].constructor === Array) ? [] : {};
        deepCopy(p[i], c[i]);
      } else {
         c[i] = p[i];
      }
    }
    return c;
  }
全部回答
有效的对象拷贝应该是指深拷贝。 浅拷贝 : 就是两个js 对象指向同一块内存地址,所以当obj1 ,obj2指向obj3的时候,一旦其中一个改变,其他的便会改变! 深拷贝:就是重新复制一块内存,这样就不会互相影响。 有些时候我们定义一个数组,把这个数据赋值给跟多对象数组中的一个字段,当我们改变对象数组中的该字段的时候,我们会把原来的数组也改变了,这样就会引起其他数组对象中的对应的字段改变,这不是我们想要的。 这个时候我们会用到深拷贝。 深拷贝的方法: var deepcopy = function(source) { var result; (source instanceof array) ? (result = []) : (result = {}); for (var key in source) { result[key] = (typeof source[key]==='object') ? deepcopy(source[key]) : source[key]; }     return result;   }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
高要区农村道路交通安全劝导站地址在什么地方
待摊费用这个科目在会计准则里不用了,用新会
小米3能下裁闪照吗?
异种3怎么样
我被别人骗了2000块
夫妻共同财产给小孩后监护人可以卖吗?
炒肉丝时用蛋清淀粉上浆是为了什么?
求:藏族舞30秒-45秒的视频和音乐
博而不精好,还是一技之长好???
为何这个八字要用“明官骑马,丈夫增荣,黄金
考新闻与传播硕士专业学位的研,苏州大学,郑
拍正装照要准备什么嘛,要不要穿着正装啊
edg曾领先一万经济,最后都被skt翻盘了,SKT
淘宝退款说00天12点30分什么意思
鲁迅曾评价《西游记》说:“神魔皆有人情,精
推荐资讯
为什么世上会发明酒这种东西啊 ?
和女朋友分手三个月了,心里还是放不下她咋办
七座mpv和SUV有什么区别
男子铁饼世界纪录是?
为什么电脑插入光盘后没反应啊??!!
亿格瑞Z5网络机顶盒为什么价格能做到这么低?
种植牙植骨后有时会有神经跳动的感觉怎么办
准备10月中旬去欧洲旅游,穿什么衣服和鞋子好
求 猫的情书 小说
不敢拍照,不敢照镜子怎么办
我玩彩上瘾了,怎么输了4万多,再玩下去会赢
form 表单在html中应该放到哪里
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?