【问题标题】:Variable as the property name in a JavaScript object literal? [duplicate]变量作为 JavaScript 对象文字中的属性名称? [复制]
【发布时间】:2012-06-18 01:44:00
【问题描述】:

可能重复:
How do I add a property to a Javascript Object using a variable as the name?
Use variable for property name in JavaScript literal?

是否可以在 JavaScript 中添加一个变量作为对象的属性名,像这样:

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

【问题讨论】:

标签: javascript


【解决方案1】:

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

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

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


编辑

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

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

【讨论】:

  • 单词+1。言语总是美好的。
  • +1 明确提到在对象文字中无法做到这一点。 (这就是我们都在这里的原因,不是吗?)
  • 还有更多的更新点让后来者知道它已经成为可能!
【解决方案2】:

像这样?

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

myObject[myVar] = "value";

【讨论】:

    【解决方案3】:

    是的,但不是直接的。

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

    【讨论】:

    • 如果你想要一个单行:var object = Object.defineProperty( {}, myVar, { value: "value" } );
    • @IsaacKleinman 那么它不能被迭代、覆盖或删除。
    • @Scimonster:你可以:var object = Object.defineProperty( {}, myVar, { value: "value", enumerable: true, writable: true, configurable: true } ); 还是一行。 ;)
    • @IsaacKleinman 很公平,但到那时它几乎比这个解决方案更长。顺便说一句,您在 enumerable 之前缺少一个逗号。
    • 我一直在寻找如何做这个中间步骤几个小时。谢谢。
    猜你喜欢
    • 2013-06-19
    • 2011-05-14
    • 2011-11-30
    • 2010-10-16
    • 2011-08-12
    • 2013-11-23
    相关资源
    最近更新 更多