关闭

js-浅拷贝,深拷贝

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

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:80062次
    • 积分:1579
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:2篇
    • 译文:0篇
    • 评论:15条
    文章分类
    最新评论