取下面的对象:

var value = 'bar';
var obj = { foo: value }
// -> Object { foo="bar" }

假设 key 也是一个变量,你可以去:
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"

这奇怪地产生一个字符串而不是一个对象。

有什么办法可以做这个速记吗?

最佳答案

ECMAScript 6 将允许你做

var obj = {
    [key]: value
};

Browser support 还不是很好,但是诸如 6to5 之类的转译器允许您今天使用这种表示法!

10-04 22:46
查看更多