IE11已经过时了,不支持那种语法...在ES2015+中的句法变化并不总是容易在老旧的浏览器上实现——但是有了这个,你就可以做到。
var bar = "b";
var foo = {};
foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón";
使用Babel,然而代码被翻译成了(ES2015-loose预设)。
var _foo;
var bar = "b";
var foo = (_foo = {}, _foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón", _foo);
或者(ES2015预设)
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var bar = "b";
var foo = _defineProperty({}, bar, "Orson oson a borsos borsós fosos koros boros korsón");
这个语法被称为计算的属性名
ES6
或ES7
有关。尝试var bar = "b", foo = {}; foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón";
- Mr_GreenES5
,但不支持像ES6
或ES7
这样的新版本。在ES5
中,您无法将变量放置在对象键中。因此出现了错误。 - Mr_Greenkey = String([bar])
,然后使用key呢? - Ronen Ness