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 全部选择 提示:你可先修改部分代码,再按运行]

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JavaScript对象的浅拷贝和深拷贝简单实现

浅拷贝我们知道浅拷贝时,如果是拷贝基本类型的变量时没问题,当拷贝非基本类型的变量时,实际上拷贝的是原对象的地址,他们指向的对象是堆中的同一个对象 var a = { key1:"...

C#浅拷贝深拷贝

  • 2014-02-27 14:26
  • 24KB
  • 下载

浅析javaScript中的浅拷贝和深拷贝

拷贝就是把父对像的属性,全部拷贝给子对象。1、javaScript的变量类型(1)基本类型:5种基本数据类型Undefined、Null、Boolean、Number 和 String,变量是直接按值...

C++深拷贝浅拷贝

  • 2012-05-30 21:17
  • 119KB
  • 下载

有关JavaScript中浅拷贝、深拷贝的简单研究

其实有关对象拷贝的场景一般来说用的不是很多,在日常开发中关于对象的拷贝的这种情况很少。 以前在Java中遇到过深浅拷贝问题,其实在JavaScript也存在。 前一阵工作中,有如下场景。用Easy...

C++之深拷贝和浅拷贝

  • 2015-09-09 19:06
  • 128KB
  • 下载

深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝

JavaScript中的浅拷贝与深拷贝   学了这么长时间的JavaScript想必大家对浅拷贝和深拷贝还不太熟悉吧,今天在项目中既然用到了,早晚也要理清一下思路了,在了解之前,我们还是先从Jav...

JavaScript深拷贝与浅拷贝的区别

JavaScript深拷贝与浅拷贝的区别 注:深浅拷贝的区别只适用于array【数组】与object【对象】 一、数组Array1、拷贝情况 浅拷贝:相当于使两个数组指针指向相同的地址,任一个数组...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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