【发布时间】:2017-03-16 14:57:15
【问题描述】:
我有以下:
const a = (...args) =>{ return {...args}}
const abc = a('lol', 'rofl', 'lmao');
console.log('abc', abc);
但是,这会打印出来
Object {0: "lol", 1: "rofl", 2: "lmao"}
但我期待
Object {lol: "lol", rofl: "rofl", lmao: "lmao"}
因为
{lol, rofl, lmao}
产生上面的行。
有没有办法传播论点以便我得到这个结果?
【问题讨论】:
-
FWIW 这不是 Ecmascript-6。
-
@lonesomeday 什么?
-
我认为 OP 正在尝试使用 ES6 中提供的简写语法动态生成对象,我不确定这是否可能。
-
因此,在对象解构中使用 spread/rest 运算符是实验性的,不是官方 ES2015 规范的一部分。这可能是使规范走上正轨的一个功能,但就目前而言,这是不可能的。 Kyle Simpson 在他的“ES6:正确的部分”研讨会中谈到了这一点
-
...is not an operator!而且{...args}和{lol, rofl, lmao}不一样。对象传播相当于使用Object.assign:Object.assign({}, args)。args是一个(字符串)数组,这就是你得到这个结果的原因。
标签: javascript ecmascript-6 ecmascript-next