你能在JS对象中计算属性名吗?

Can you evaluate a property name within a JS object?

本文关键字:属性 计算 JS 对象      更新时间:2023-09-26

我知道你可以在JS对象中计算属性的值,就像下面这样:

let object = {
  value: 5+5
};

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

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