变量作为 JavaScript 对象文字中的属性名称?

IT技术 javascript
2021-02-02 12:30:12

可能的重复:
如何使用变量作为名称向 Javascript 对象添加属性?
在 JavaScript 文字中使用变量作为属性名称?

是否可以在 JavaScript 中添加一个变量作为对象的属性名称,如下所示:

var myVar = "name";
var myObject = {
    {myVar}: "value"
};
3个回答

您可以使用以下[]语法将表达式用作属性名称(与始终将它们视为字符串.propprop: value语法相比):

var myObject = {};
var myVar = "name";
myObject[myVar] = "value";

但是,无法在对象文字中使用它。您必须先创建对象,然后分别分配每个属性。


编辑

在 ES6 中,现在可以使用ComputedPropertyName,它以以下语法的形式出现:

var myVar = "name";
var myObject = {
    [myVar]: "value"
};
+1 明确指出无法在对象文字中执行此操作。(这就是我们都在这里的原因,不是吗?)
2021-03-21 12:30:12
还有更多的更新积分,让后来者知道它已经成为可能!
2021-04-02 12:30:12
+1 的话。言语总是美好的。
2021-04-08 12:30:12

像这样?

var myVar = "name";
var myObject = {};

myObject[myVar] = "value";

是的,但不是直接的。

var myVar = "name";
var object = {};
object[myVar] = "value";
@IsaacKleinman 足够公平,但到那时它几乎比这个解决方案更长。顺便说一句,你之前缺少一个逗号enumerable
2021-03-20 12:30:12
几个小时以来,我一直在寻找如何进行中间步骤。谢谢你。
2021-03-23 12:30:12
如果你想要一个单线: var object = Object.defineProperty( {}, myVar, { value: "value" } );
2021-03-29 12:30:12
@Scimonster:你可以: var object = Object.defineProperty( {}, myVar, { value: "value", enumerable: true, writable: true, configurable: true } );仍然是一行。;)
2021-04-06 12:30:12
@IsaacKleinman 那么它就不能被迭代、覆盖或删除。
2021-04-09 12:30:12