对象定义中的方括号表示法

时间:2015-11-21 19:03:32

标签: javascript

在JavaScript中,我们可以使用[]动态访问或创建对象属性。是否记录了在定义/创建对象时也可以使用它?

据我测试过(Chrome,FF,Safari)最新版本,效果很好。这是否有记录,旧的浏览器是否也支持这个?

var key = "foo";
var value = 'bar';
var object = {
    a: 1,
    b: 2,
    [key]: value,
    c: 3
};

document.body.innerHTML = JSON.stringify(object); // {"a":1,"b":2,"foo":"bar","c":3}

http://jsfiddle.net/o2x6chzd/

2 个答案:

答案 0 :(得分:3)

是。它被称为计算属性名称,是ES2015中的新功能。

这意味着您可以在与创建对象实例相同的词法结构中添加具有运行时选择名称的对象属性。

以前,您必须在对象实例化后添加运行时计算名称的属性。

表达式可用于计算名称:

function foo() { return 1; }
var o = {
  [foo() + 1]: 'should be 2'
};
console.log(o); // Object {2: "should be 2"}

答案 1 :(得分:3)

从ECMAScript 6开始,对象初始化程序语法也支持计算属性名称。这允许您将表达式放在方括号[]中,该表达式将作为属性名称计算。

检查documentation