【发布时间】:2015-02-15 09:04:26
【问题描述】:
取下面的对象:
var value = 'bar';
var obj = { foo: value }
// -> Object { foo="bar" }
假设键也是一个变量,可以这样:
var key = 'foo', value = 'bar';
var obj = {}
obj[key] = value;
// -> Object { foo="bar" }
现在,我想在一行中执行此操作(速记)。所以我尝试了:
var obj = {}[key] = value; // or,
var obj = ({})[key] = value; // or,
var obj = new Object()[key] = value;
// -> "bar"
这奇怪地产生了一个字符串而不是一个对象。
有没有办法做到这一点?
【问题讨论】:
-
不,没有,为什么会有!
-
同样的原因我会使用 {} 而不是 new Object()。在某些情况下它更干净。
-
var obj = new Object()[key] = value;比var obj = {}; obj[key] = value;好多少? -
仅限 ES6
obj = {[key]: value} -
您的任何尝试都比简单地在两行上输入更干净......
标签: javascript syntax shorthand