javascript - Object.assign 和 object spread 的区别

标签 javascript ecmascript-6 ecmascript-next

<分区>

拥有

var obj = { a: 1, b: 2};

有什么区别

obj = Object.assign(obj, { c: 3});

obj = {...obj,  c: 3 };

最佳答案

不同之处在于,当使用跨页时,您总是在创建一个新对象:

const a = { name: 'Joe Bloggs' }
const b = { ...a, age: 27 };

console.log(a === b) //=> false

但是使用 Object.assign 可以改变现有对象:

const a = { name: 'Joe Bloggs' }
const b = Object.assign(a, { age: 27 });

console.log(a === b) //=> true

您仍然可以通过将空对象文字作为第一个参数传递来实现使用 Object.assign 传播的对象的行为:

const a = { name: 'Joe Bloggs' }
const b = Object.assign({}, a, { age: 27 });

console.log(a === b) //=> false

关于javascript - Object.assign 和 object spread 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462000/

相关文章:

javascript - 解释一下这个DOM遍历顺序

javascript - 如何使模块兼容 CORS?

javascript - 传承值(value)

javascript - 如何创建一个按钮来模拟古腾堡富文本编辑器上的链接弹出窗口功能

javascript - 如何检查有多少个空输入字段?

javascript - 有没有办法让第二个函数使用第一个函数: syntax

javascript - 隐藏在元素 svg 外部的阴影

javascript - async/await 不能与 fetch 结合使用

typescript - ECMAScript 2016 装饰器是否使 TypeScript 装饰器变得多余?

javascript - Javascript 中的构造函数属性是什么?