js-浅拷贝,深拷贝

原创 2016年08月28日 18:12:18

在JavaScript中,存储对象都是存储的对象的地址,浅拷贝(复制)会导致复制的多个对象指向内存同一块地址。

相当于C#中的引用类型对象。

function Person()
{
    this.name = name;
}

var p = new Person();
p.name = "123";
p2.name = "test";
alert(p.name);  结果是test

而深拷贝是在内存开辟一块新的地址,是连个不同的对象。

这里使用json转换来实现对象的深拷贝。

//利用json实现对象的深拷贝
function deepCopy(oldValue) {
    var newJson = JSON.stringify(oldValue)
    return JSON.parse(newJson)
}
//使用原型扩展类的方法
Person.prototype.Clone = function () {
    var newJson = JSON.stringify(this);
    return JSON.parse(newJson);
}
var p = new Person();
p.name = "123";
var p2 = p.Clone();
//var p2 = deepCopy(p);
p2.name = "test";
alert(p.name);  //结果是123 不影响p对象的值



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

C#浅拷贝深拷贝

  • 2014年02月27日 14:26
  • 24KB
  • 下载

C++之深拷贝和浅拷贝

  • 2015年09月09日 19:06
  • 128KB
  • 下载

js对象浅拷贝和深拷贝详解

1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象。 下面这个函数,就是在做拷贝: var Chinese = {   nation:'中国' } var Doctor = {   career...

copy的使用(深拷贝、浅拷贝)

  • 2015年10月27日 15:56
  • 31KB
  • 下载

浅析Java中的深拷贝与浅拷贝

  • 2013年04月24日 12:56
  • 2KB
  • 下载

浅谈js中的浅拷贝和深拷贝

对于字符串类型,浅复制是对值的复制,对于对象来说,浅复制是对对象地址的复制,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会改变,而深复制则是...

C++深拷贝浅拷贝

  • 2012年05月30日 21:17
  • 119KB
  • 下载

js中的继承——浅拷贝、深拷贝

构造函数的继承 http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今...

js对象的深拷贝和浅拷贝

为啥要用深拷贝?在很多情况下,我们都需要给变量赋值,给内存地址赋值,但是在赋引用类型值的时候,只是共享同一个内存区域,导致赋值的时候,还跟之前的值保持一致性。看一个具体的例子// 给test赋值了一个...

js中的浅拷贝和深拷贝

浅拷贝和深拷贝也叫做浅克隆和深克隆,深浅主要
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js-浅拷贝,深拷贝
举报原因:
原因补充:

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