【问题标题】:How to add object literal within object literal [duplicate]如何在对象文字中添加对象文字[重复]
【发布时间】:2014-04-13 02:35:00
【问题描述】:

假设我有一个如下所示的对象字面量:

C = {"A":"a","B":"b","C":"c"};

我想添加另一个像这样的对象..

"D" : {"E":e}

其中e 是一个变量。和e = "ValueOfE" 这样C就会有这种值..

C = {"A":"a","B":"b","C":"c", "D" : { "E" : "ValueOfE"}};

我该怎么做?

【问题讨论】:

  • 看起来很像你已经这样做了......
  • 是的,@m59 是对的。此外,如果您想在声明对象后添加它。你可以这样做:c["D"] = { "E" : "ValueOfE"}.
  • @m59 - 不,我没有。我不会问我是否已经知道答案:)

标签: javascript object-literal


【解决方案1】:

假设您的 C 对象字面量如下:

C = {"A":"a","B":"b","C":"c"};

您可以向其中添加任何其他对象,例如:

var D = { "E" : e};
C["D"] = D;

或者简单地说:

C["D"] = { "E" : e};

如果你的密钥("D")是一个有效的标识符,在这种情况下,你也可以这样做:

C.D = { "E" : e};

除此之外,在某些较旧的浏览器中,您不能使用不带引号的保留字。例如 ES3 不允许使用不带引号的保留字作为属性名称,例如:default、delete、do、double、else、enum,...案例在这里。

您还可以使用文字创建对象并传递D 对象:

C = {"A":"a","B":"b","C":"c", "D":D };

还有:

C = {"A":"a","B":"b","C":"c", "D": { "E" : e } };

关键是 JavaScript 对象有点像 HashMaps,带有键和值,使用文字语法,您可以使用其中的所有其他对象和值来创建它。您还可以在创建对象后添加新的键值对。

【讨论】:

  • "并且如果您的 key("D") 不是保留关键字..." 属性名称必须是有效的标识符名称。所以例如C.if = 'foo'; 完全有效,但它可能会导致旧浏览器出现问题。因此,从技术上讲,如果属性名称是保留关键字,您也可以使用点表示法,但最好不要使用。
  • @FelixKling:谢谢你的反馈,我改了。
【解决方案2】:

对象字面量中的值可以是任意表达式,这意味着它们可以包含其他对象字面量,利用现有变量等等;所以如果你问我认为你是什么,那么你可以写:

C = { "A": "a", "B": "b", "C": "c", "D": { "E": e } };

【讨论】:

    【解决方案3】:

    使用以下语法:

    C = {"A":"a","B":"b","C":"c"};
    C.D = {"E":e};
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2022-01-06
      • 2021-11-02
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      相关资源
      最近更新 更多