Object.assign和对象传播之间的区别

时间:2016-07-19 14:55:07

标签: javascript ecmascript-6 ecmascript-next

具有

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

之间有什么区别
obj = Object.assign(obj, { c: 3});

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

1 个答案:

答案 0 :(得分:20)

不同之处在于,当使用点差时,您始终会创建一个新对象:

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