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);
新对象 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);