我知道你可以在JS对象内部评估属性的值,就像下面这样:
let object = {
value: 5+5
};
我想知道是否有可能用JS评估属性名称,即实现以下内容:
let object;
object[5+5].value = "ten";
作为类似以下的内容:
let object = {
5+5: "ten"
};
我知道你可以在JS对象内部评估属性的值,就像下面这样:
let object = {
value: 5+5
};
let object;
object[5+5].value = "ten";
let object = {
5+5: "ten"
};
在ES2015中,可以使用这个特性。但在ES5中不行。但首先要澄清一件事:这是JavaScript,而不是JSON。
在ES2015(以前被称为ES6):
var something = "foo";
var object = {
[something]: "bar";
};
alert(object.foo); // "bar"
[ ]
中可以是任何您喜欢的表达式。返回的值会被转换为字符串。这意味着您可以尝试一些有趣的操作,例如:
var counter = function() {
var counter = 1;
return function() {
return counter++;
};
};
var object = {
["property" + counter()]: "first property",
["property" + counter()]: "second property"
};
alert(object.property2); // "second property"
JSON是一种受JavaScript对象初始化语法启发的序列化格式。在JSON中绝对不可能做到像那样的任何事情。
'use strict';
let object = {
[5+5]: "ten"
};
console.log(object); // Object {10: "ten"}