你能评估JS对象中的属性名吗?

时间:2015-08-18 22:04:43

标签: javascript

我知道您可以评估JS对象内部属性的值,如下所示:

let object = {
  value: 5+5
};

我想知道是否有任何可能的方法来评估JS属性的名称,即实现以下目标:

let object;
object[5+5].value = "ten";

像:

let object = {
  5+5: "ten"
};

2 个答案:

答案 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"}