ECMAScript 对象 spread/rest - 一次分配给多个属性

ECMAScript object spread/rest - assigning to multiple properties at once

新对象 rest/spread 语法有一些非常好的应用程序,例如 omitting a field from an object

是否有一种(建议的)方法也可以将同名变量的值分配给一个对象的多个属性?换句话说,更简短的说法是:

o.foo = foo;
o.bar = bar;
o.baz = baz;

注意:在不丢失 o 现有属性的情况下,仅添加它们。

使用Object.assign:

const o = { initial: 'initial' };
const foo = 'foo';
const bar = 'bar';
const baz = 'baz';
Object.assign(o, { foo, bar, baz });
console.log(o);

请注意,shorthand 属性 名称和 Object.assign 都是在 ES6 中引入的 - 它不需要非常最新的 browser/environment。

重新分配对对象的引用类似的事情是通过展开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);

const foo = 'foo';
const bar = 'bar';
const baz = 'baz';
const o = {foo, bar, baz};
console.log(o);