在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中

所以我在阅读JavaScript对象中的一些核心概念: 以下是复制对象的代码:

function copy(a, b) {
    for (prop in b) {
        a[prop] = b[prop];
    }
    return a;
}
它将用类似的属性o
b
覆盖
a
的属性

现在如果我这样做:

function union(a, b) {
    return copy(copy({}, a), b);
}

这本书说,如果
a
b
具有相同的属性,那么
union
将使用
a
中的值。需要澄清。

这本书错了,可能是打字错误

如果
a
b
具有相同的属性,则将使用
a
中的值


由于上次调用
copy
pass
b
作为第二个参数,如果
a
b
具有相同的属性,那么
union
将使用
b
中的值。

copy({},a)
将只生成
a
。所以
copy(copy({},a,b)
copy(a,b)
把书从你的窗口扔出去…@royhowie不,它不是。OP的代码创建了一个新对象,但您的版本发生了变异
a