对于 JavaScript 普通对象,定义和使用一般如下:
1
2
3
4
5
6
7
| var obj = {
a: 1
};
obj.b = 2;
var k = 'c';
obj[k] = 3;
obj['a'] = 0;
|
如果属性名(property name)是变量,那么引用时需要使用 []
语法。
ES2015 中,使用字面量创建对象时也可以使用变量来创建属性名,具体方案是使用计算属性名(computed property name),使用形式是 [property]
,如:
1
2
3
4
5
| var i = 1;
var obj = {
[i]: 3
};
console.log(obj); // {'1': 3}
|
并不是只能使用变量,而是可以使用一切表达式,如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| // Computed property names (ES6)
var i = 0;
var a = {
["foo" + ++i]: i,
["foo" + ++i]: i,
["foo" + ++i]: i
};
console.log(a.foo1); // 1
console.log(a.foo2); // 2
console.log(a.foo3); // 3
var param = 'size';
var config = {
[param]: 12,
["mobile" + param.charAt(0).toUpperCase() + param.slice(1)]: 4
};
console.log(config); // { size: 12, mobileSize: 4 }
|
参考链接