ECMAScript对象传播/休息-一次分配给多个属性

时间:2018-08-23 03:49:24

标签: javascript object ecmascript-next ecmascript-2017

新的对象剩余/扩展语法具有一些令人惊讶的出色应用程序,例如omitting a field from an object

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

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

更新:忘记添加:而不会丢失 o

的现有属性

2 个答案:

答案 0 :(得分:5)

使用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);

答案 1 :(得分:1)

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