无论Object.assign和对象传播只能做一浅合并。
问题的一个示例:
// No object nesting const x = { a: 1 } const y = { b: 1 } const z = { ...x, ...y } // { a: 1, b: 1 }
输出是您期望的。但是,如果我尝试这样做:
// Object nesting const x = { a: { a: 1 } } const y = { a: { b: 1 } } const z = { ...x, ...y } // { a: { b: 1 } }
代替
{ a: { a: 1, b: 1 } }
你得到
{ a: { b: 1 } }
x完全被覆盖,因为传播语法仅深入了一层。与相同Object.assign()。
Object.assign()
有没有办法做到这一点?
有人知道ES6 / ES7规范中是否存在深度合并?
不,不是的。