深拷贝和浅拷贝的区别和实现

4人阅读 评论(0) 收藏 举报
分类:

首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。

var obj1 = {
    a:1,
    b:{
        c:2
    }
}​
var obj2 = obj1
obj1.a = 3
//现在obj2.a也是3

//浅拷贝
var obj3={}
forvar attr in obj1){
    obj3[attr] = obj1[attr]
}
//深拷贝1
递归
 var obj1 = {
            a:1,
            b:{
                c:2
            }
        }

 function deepCopy(obj){
            var result={}
            for(var attr in obj){
                if(typeof obj[attr] ==="object"){
                    console.log("hah ")
                    result[attr]=deepCopy(obj[attr])

                }else{
                    result[attr] = obj[attr]
                }
            }
            return result
        }    
      var obj2 =  deepCopy(obj1)
      var obj3 = obj1
        obj1.a=6
        obj1.b.c=4
        console.log(obj2)
            // a:1
            // b:{c: 2}
        console.log(obj3)
        // a:6
        // b:{c: 4}
//深拷贝2
JSON.parse(JSON.stringify(obj))

递归方法性能更好些

查看评论

Python中深拷贝与浅拷贝的区别:

Python中深拷贝与浅拷贝的区别:
  • u014745194
  • u014745194
  • 2017-04-20 16:58:35
  • 2939

OC当中的深拷贝和浅拷贝

深拷贝和浅拷贝是一个经常问到的问题。 很多人认为copy是浅拷贝,mutableCopy是深拷贝。在解释copy与mutableCopy的区别,我们先搞清楚什么是深拷贝和浅拷贝 从...
  • maciostang
  • maciostang
  • 2017-02-08 11:20:28
  • 615

C# 浅拷贝与深拷贝区别 解惑篇

问题起源: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter....
  • cyq1162
  • cyq1162
  • 2016-11-23 12:07:50
  • 587

Python 赋值、浅拷贝、深拷贝的区别?

http://songlee24.github.io/2014/08/15/python-FAQ-02/ 在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念...
  • yugongpeng_blog
  • yugongpeng_blog
  • 2015-06-23 12:20:26
  • 4520

深拷贝与浅拷贝简单实现及原理

代码一:let obj1={ name:'li', skill:'web' }let o={}; for(let i in obj1){ o[i]=obj1[i]; } //c...
  • wis2007
  • wis2007
  • 2017-08-22 17:36:46
  • 459

JavaScript浅拷贝与深拷贝浅析

在JavaScript中,变量的拷贝是无处不在的,而且也是不可或缺的,我们常常使用框架自带的拷贝方法,比如angular1.x自带的,angular.copy(),有时候却不知道使用纯JavaScri...
  • GongZhongNian
  • GongZhongNian
  • 2017-08-17 16:55:59
  • 243

iOS开发——深拷贝与浅拷贝详解

深拷贝和浅拷贝这个问题在面试中常常被问到,而在实际开发中,只要稍有不慎,就会在这里出现问题。尤其对于初学者来说,我们有必要来好好研究下这个概念。我会以实际代码来演示,相关示例代码上传至 这里 。   ...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016-06-28 01:41:07
  • 9336

关于Python中深拷贝与浅拷贝的理解(一)---概念

缘由 用Python也有很长时间了,一直在做科学计算和爬虫采集方面的东西。自己的毕业论文涉及到编写一个科学计算的软件,也是用Python编写。界面采用PyQt。 软件的主体前段时间已经写好,最近在试算...
  • u014433413
  • u014433413
  • 2015-11-10 20:15:36
  • 4078

java的深拷贝与浅拷贝

转载:http://www.2cto.com/kf/201401/273852.htmlJava中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。...
  • lcg910978041
  • lcg910978041
  • 2016-07-22 10:46:02
  • 9138

python3中浅拷贝与深拷贝的实现方式、区别

python3浅拷贝与深拷贝的实现方式、区别: list1 = [1,2,3] list2 = list1 list1[0] = 0 print(list2) print(list1) 打...
  • jimmy_gyn
  • jimmy_gyn
  • 2018-01-22 20:59:29
  • 33
    个人资料
    持之以恒
    等级:
    访问量: 3138
    积分: 675
    排名: 7万+
    文章存档