【问题标题】:How can I use a key value as a variable name in JavaScript? [duplicate]如何在 JavaScript 中使用键值作为变量名? [复制]
【发布时间】:2023-03-27 13:25:01
【问题描述】:

我希望能够将 JSON 带入我的程序,然后根据该数据创建对象。所以,我想创建对象,其中该对象的名称是存储在键值对中的值。例如,如果我有以下 JSON(而且我知道这不是完美的 JSON):

{
    "objectName" : "**variableName**",
    "someDataName" : "thatData",
    "someOtherDataName" : "thisData"
}

然后我希望能够制作这样的对象:

function myObject(thatData, thisData) {
    this.name = name;
    this.thatData = thatData;
}

var **variableName** = new myObject(thatData, thisData);

这里的关键是我希望能够使用存储在 ObjectName 键值对中的值作为对象的变量名。这甚至可能吗?我一直在寻找如何做到这一点。我相信这与"Variable" variables in Javascript? 不同,因为我试图使用键值对中的值来命名我的对象。

【问题讨论】:

  • 你可以在这里查看stackoverflow.com/questions/5187530/…
  • 我相信我的问题与您提到的问题不同,因为我试图在键/值对中使用 JSON 值来创建我的变量名。
  • @NickP:价值的来源无关紧要。您想使用字符串的值作为变量名。这才是最重要的。
  • @NickP 我给出了键类型对象的例子

标签: javascript json variables object


【解决方案1】:

如果我正确理解您在此处尝试执行的操作,一种方法可能是在变量中设置属性:

let myContainer = {};
// ...
myContainer['whatever_variable_name'] = new ...

您可以使用myContainer.whatever_variable_namemyContainer['whatever_variable_name'] 来访问新对象。

要从 JSON 对象分配属性,请参阅 Object.assign

【讨论】:

    【解决方案2】:

    您可以使用window 对象上的property accessor 在全局范围内设置动态键的值。

    var window["**variableName**"] = new myObject(thatData, thisData);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 2020-10-03
      • 2014-01-01
      • 1970-01-01
      • 2020-11-27
      • 2020-03-28
      • 2017-01-08
      相关资源
      最近更新 更多