【问题标题】:ECMAScript object spread/rest - assigning to multiple properties at onceECMAScript 对象扩展/休息 - 一次分配给多个属性
【发布时间】:2019-01-29 09:02:55
【问题描述】:
新的对象休息/传播语法有一些令人惊讶的好应用,比如omitting a field from an object。
是否有(建议的)方法也可以将同名变量的值分配给对象的多个属性?换句话说,更短的说法是:
o.foo = foo;
o.bar = bar;
o.baz = baz;
注意:不丢失o的现有属性,只添加它们。
【问题讨论】:
标签:
javascript
object
ecmascript-next
ecmascript-2017
【解决方案1】:
使用Object.assign:
const o = { initial: 'initial' };
const foo = 'foo';
const bar = 'bar';
const baz = 'baz';
Object.assign(o, { foo, bar, baz });
console.log(o);
请注意,速记属性名称和Object.assign 都是在 ES6 中引入的——它不需要非常最新的浏览器/环境。
重新分配对对象的引用的类似方法是通过传播o 和列表foo, bar, baz来初始化另一个对象:
let o = { initial: 'initial' };
const foo = 'foo';
const bar = 'bar';
const baz = 'baz';
o = { ...o, foo, bar, baz };
console.log(o);
【解决方案2】:
const foo = 'foo';
const bar = 'bar';
const baz = 'baz';
const o = {foo, bar, baz};
console.log(o);