【问题标题】:Difference between Object.assign and object spread [duplicate]Object.assign 和 object spread 之间的区别 [重复]
【发布时间】:2016-11-22 13:16:48
【问题描述】:

拥有

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

两者有什么区别

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

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

【问题讨论】:

  • 好的,所以对象字面量的扩展运算符不是 ES6,而 Object.assign 是。

标签: javascript ecmascript-6 ecmascript-next


【解决方案1】:

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

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

【讨论】:

  • 因为你不能指定一个对象传播的目标,因此不能改变现有的对象,它实际上比Object.assign更安全,更简洁。
  • 所以对象传播比Object.assign @user6445533 更可取和更安全
猜你喜欢
  • 1970-01-01
  • 2012-12-12
  • 2019-03-29
  • 1970-01-01
  • 2017-03-24
  • 2010-12-05
  • 2021-03-28
  • 1970-01-01
  • 2018-08-29
相关资源
最近更新 更多