在JavaScript中复制对象
所以我在阅读JavaScript对象中的一些核心概念: 以下是复制对象的代码:在JavaScript中复制对象,javascript,oop,Javascript,Oop,所以我在阅读JavaScript对象中的一些核心概念: 以下是复制对象的代码: function copy(a, b) { for (prop in b) { a[prop] = b[prop]; } return a; } 它将用类似的属性ob覆盖a的属性 现在如果我这样做: function union(a, b) { return copy(copy({}, a), b); } 这本书说,如果a和b具有相同的属性,那么union将使用a中
function copy(a, b) {
for (prop in b) {
a[prop] = b[prop];
}
return a;
}
它将用类似的属性ob
覆盖a
的属性
现在如果我这样做:
function union(a, b) {
return copy(copy({}, a), b);
}
这本书说,如果
a
和b
具有相同的属性,那么union
将使用a
中的值。需要澄清。这本书错了,可能是打字错误
如果a
和b
具有相同的属性,则将使用a
中的值
由于上次调用
copy
passb
作为第二个参数,如果a
和b
具有相同的属性,那么union
将使用b
中的值。copy({},a)
将只生成a
。所以copy(copy({},a,b)
和copy(a,b)
把书从你的窗口扔出去…@royhowie不,它不是。OP的代码创建了一个新对象,但您的版本发生了变异a
。