Когда вы используете Object.assign
, первый объект, который вы ему даете, будет содержать все остальные объекты, объединенные в него. То есть, первый объект будет мутирован.
Если вы хотите избежать мутирования объектов, которые вы объединяете, полезно передать пустой объект в качестве первого параметра для предотвращения любого компонента объекты от изменения.
Вот пример, демонстрирующий разницу:
const obj1 = {
foo: "bar"
}
const obj2 = {
key: "value"
}
// Here, obj1 is the same after the Object.assign call
console.log(Object.assign({}, obj1, obj2));
console.log(obj1)
console.log(obj2)
console.log("\n\n")
// Note that after this call, obj1 holds both keys. So this will mutate it:
console.log(Object.assign(obj1, obj2));
console.log(obj1) // This is different now
console.log(obj2)