文章

对象深拷贝

对象深拷贝

对象深拷贝

如下的代码:

var a = {‘name’: ‘wangying’};

var b = a;

b.name = ‘yingwang’;

console.log(a.name);

发现,a 对象里面的 name 居然 也变成了 yingwang。

这是为什么呢?

二、探索

经过我的探索,发现原来 JavaScript 中对象的赋值是默认引用赋值的,如果你想要复制赋值,则必须要重新分配对象,使用如下代码即可避免此问题:

var a = {‘name’: ‘wangying’};

var b = Object.assign({}, a);

b.name = ‘yingwang’;

console.log(a.name);

此时即可看到 a.name 的值并没有发生变化了。

Enjoy JavaScript,

To be Stronger:)

使用** Object.assign()** 方法复制对象 终极解决方案:JSON.parse(JSON.stringify(obj))

本文由作者按照 CC BY 4.0 进行授权