11

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

之间有什么区别

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

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

1 回答 1

37

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

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

于 2016-07-19T15:11:43.953 回答