在IE 11中动态创建对象键(预期标识符,字符串或数字,而不是逗号问题)

时间:2016-05-23 13:42:39

标签: javascript jquery internet-explorer

我正在寻找一种能够动态创建对象键(措辞正确吗?)的解决方案。

任意示例,但这适用于chrome和firefox

var weeks = {}
for(var i = 0; i < 5; i++){
    $.extend(weeks, {["week" + i] : (i * 2)}
}

//weeks = {"week0":0,"week1":2,"week2":4,"week3":6,"week4":8}

或替代任意示例

var object = {
  ["a" + 50]: "value"
}

这个问题似乎植根于[]运算符,但我不明白这个问题是如何或为什么只出现在IE中。我没有在以前的版本中测试IE11,但我认为问题会在那里持续存在。

由于问题似乎与[]运算符本身有关,在变量中创建我的键然后将该变量推送到我的[]中无法解决问题,所以我似乎都是谷歌的想法和关键词。

那么有没有办法在IE中动态创建对象密钥?

1 个答案:

答案 0 :(得分:7)

IE11不像Chrome,Firefox甚至Edge那样是“现代”网络浏览器。它不支持ES6(ES2015)的新“对象文字扩展”。

您使用的语法称为“计算属性键”,您不能在IE11中使用它。你需要以“老式”的方式做到这一点。

var weeks = {};

for(var i = 0; i < 5; i++){
    var tmp = {};
    tmp["week" + i] = i*2;

    $.extend(weeks, tmp);
}