在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}
发布于 2015-11-21 11:07:10
是。它被称为计算属性名,在ES2015中是新的。
这意味着您可以在与创建对象实例相同的词法结构中添加具有运行时选择的名称的对象属性。
以前,您必须在对象实例化之后添加具有运行时计算名称的属性。
表达式可用于计算名称:
function foo() { return 1; }
var o = {
[foo() + 1]: 'should be 2'
};
console.log(o); // Object {2: "should be 2"}
发布于 2015-11-21 11:10:36
从ECMAScript 6开始,对象初始化器语法还支持计算的属性名。这使您可以将表达式放入方括号[]中,该表达式将作为属性名称计算。
检查一下文档。
https://stackoverflow.com/questions/33847392
复制