首页 > 解决方案 > ECMAScript 对象扩展/休息 - 一次分配给多个属性

问题描述

新的 object rest/spread 语法有一些令人惊讶的好应用,比如从 object 中省略一个字段

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

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

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

标签: javascriptobjectecmascript-nextecmascript-2017

解决方案


使用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 list来初始化另一个对象foo, bar, baz

let o = { initial: 'initial' };
const foo = 'foo';
const bar = 'bar';
const baz = 'baz';

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


推荐阅读