我知道您可以评估JS对象内部属性的值,如下所示:
let object = {
value: 5+5
};
我想知道是否有任何可能的方法来评估JS属性的名称,即实现以下目标:
let object;
object[5+5].value = "ten";
像:
let object = {
5+5: "ten"
};
答案 0 :(得分:5)
在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中做任何类似的事情。
答案 1 :(得分:1)
不确定。试试这个:
'use strict';
let object = {
[5+5]: "ten"
};
console.log(object); // Object {10: "ten"}