Javascript浅拷贝与深拷贝实现

原创 2006年05月28日 21:11:00
    Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍就是原来对像的地址.那怎么来做呢 答案是克隆.

     什么是"clone"?

     在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java/javasript语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段,当然了 javascript语言中并没有此方法.

     所以我特意写了两个克隆方法:一个为浅复制 ,一个为深复制.

解释:
     浅复制(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
     深复制(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

下面是测试代码:
运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

C++ 深拷贝 与 浅拷贝

本文分三部分阐释深拷贝于浅拷贝,着眼点主要还是在深拷贝。第一部分讲述为什么会有拷贝,即对象之间的复制。第二部分讲述为什么会有深拷贝于浅拷贝,即类成员存在资源分配。第三部分阐释深拷贝于浅拷贝的定义与使用...
  • u013630349
  • u013630349
  • 2015年06月01日 22:33
  • 933

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

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

js 深复制(深拷贝)和浅复制(浅拷贝)的区别

最近在做项目的时候,发现deepCopy()这个函数,顾名思义是深复制的意思,有了深复制反向思考肯定有浅复制,查阅资料之后便做下整理~ 个人理解,深复制和浅复制最根本的区别在于**是否是真正获...
  • sjn0503
  • sjn0503
  • 2016年08月21日 15:06
  • 2518

C++的深拷贝与浅拷贝

对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a;  而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单...
  • lpp0900320123
  • lpp0900320123
  • 2014年09月02日 15:35
  • 39725

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

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

浅拷贝与深拷贝 拷贝控制总结

class A { int i; }; class B { A *p; public: B(){p=new A;} ~B(){delete p;} /* B(const B &temp)...
  • ZeroCBoy
  • ZeroCBoy
  • 2016年06月13日 18:33
  • 454

c++深拷贝和浅拷贝

C++中类的拷贝有两种:深拷贝,浅拷贝当出现类的等号赋值时,会调用拷贝函数 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅...
  • u010700335
  • u010700335
  • 2014年10月06日 19:27
  • 1662

clone方法 --深拷贝与浅拷贝

Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象...
  • cws1214
  • cws1214
  • 2016年08月12日 16:58
  • 2273

一看就懂的,java深拷贝浅拷贝

前言 这两天,男票兴奋地通知我,我的博客终于有排名了,刚好是20000名,原来都是千里之外。我也比较兴奋,在这里谢谢每一个看到我文章的同学。O(∩_∩)O哈哈~,为什么有一种颁奖典礼的赶脚。真的啦,...
  • XIAXIA__
  • XIAXIA__
  • 2014年12月01日 21:56
  • 6402

C++中的深拷贝与浅拷贝

说道c++,大家第一印象就是面向对象这四个字。当我们把一个抽象的类描述完毕,该有的功能都有的时候,接下来要做的事情就是去把这个类实例化成对象,换成人话就是创建一个对象。这个对象的类型 就是用于实例化这...
  • farsight2009
  • farsight2009
  • 2017年02月10日 16:47
  • 374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Javascript浅拷贝与深拷贝实现
举报原因:
原因补充:

(最多只允许输入30个字)