硬拷贝与浅拷贝javascript

Hard Copy vs Shallow copy javascript

本问题已经有最佳答案,请猛点这里访问。

这可能是一个古老的问题,但我真的很好奇通过引用复制对象作为JavaScript中的赋值的性质。

意思是如果

1
2
3
4
5
var a = {};
var b = a;
a.name ="Renato";
console.log(b);
Object {name:"renato"}

我对javascript有点陌生,这确实引起了我的注意,把一个浅拷贝作为对象分配的默认值。我搜索了它,为了创建一个硬拷贝,你必须创建一个混音器。我想知道为什么选择这个作为默认值,因为它的转换看起来非常含蓄。谢谢!


对象和数组被视为对同一对象的引用。如果要克隆对象,有几种方法可以做到这一点。

在以后的浏览器中,可以执行以下操作:

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

如果你想去图书馆,罗达什提供_.clone_.cloneDeep

1
var b = _.clone(a);

如果您不想做这些方法中的任何一个,您可以通过枚举每个键和值并将它们分配给一个新的对象。

通常,在传递多个函数等时,将它们作为引用对待是很有价值的。对于诸如数字和字符串之类的基元来说,情况并非如此,因为在大多数情况下,这感觉非常违反直觉。