这可能是一个老问题,但我真的很好奇通过引用复制对象的性质作为javascript中的赋值。
意思是如果
var a = {};
var b = a;
a.name = "Renato";
console.log(b);
Object {name: "renato"}
我是javascript的新手,这引起了我的注意,有一个浅拷贝作为对象赋值的默认值。我搜索了一下,为了创建一个硬拷贝,你必须创建一个mixin。我想知道为什么这被选为默认值,因为它的转换似乎非常含蓄。谢谢!
答案 0 :(得分:22)
对象和数组被视为对同一对象的引用。如果要克隆对象,有几种方法可以执行此操作。
在以后的浏览器中,您可以执行以下操作:
var b = Object.assign({}, a);
如果你想去图书馆,lodash提供_.clone
(以及_.cloneDeep
):
var b = _.clone(a);
如果您不想执行这些方法中的任何一种,您只需枚举每个键和值并将它们分配给新对象。
通常,在通过多个函数等时将它们视为引用是有价值的。对于数字和字符串等基元来说,情况并非如此,因为在大多数情况下,这会感觉非常违反直觉。