取下面的对象:
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 之类的转译器允许您今天使用这种表示法!