js-浅拷贝,深拷贝

在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对象的值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值