如何动态地将对象添加到对象内的对象

时间:2016-10-09 21:07:29

标签: javascript object dynamic

所以我有一个对象:structure[obj]我可以用structure[obj][obj2]动态添加一个对象,但是我需要能够在其中添加另一个对象。我尝试过HashSet,但这不起作用。这样做的正确方法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

如果您已分配

structure["foo"] = {bar: 1}

然后你可以分配另一个这样的元素

structure["foo"]["harry"] = 99;

但是如果没有第一步就不能这样做,因为结构[“foo”]还不存在

答案 1 :(得分:0)

这句话:

structure[object] = "";

您不是将对象添加到structure,而是添加一个空字符串,它是一个原始值,而不是一个对象。名称object在您的代码中也会产生误导,因为显然您有一个字符串值('foo')。但即使它是一个真正的对象,通过在上面的语句中使用它,JavaScript将获取它的字符串值(对于普通对象将是'Object object')并将其用作{{{{}中的键(属性) 1}}。

查看整段代码:

structure

......声明var structure = {} function addObject(object){ structure[object] = ""; } function ObjectToObject(object2, object) { structure[object][object2] = ""; } addObject("foo"); ObjectToObject("bar","foo"); 将无效。归结为:

structure[object][object2] = "";

由于structure.foo.bar = ""; 是字符串值,JavaScript会将其强制转换为String对象,否则无法应用structure.foo。所以这就是执行的内容:

.bar

确实已经完成new String(structure.foo).bar = ""; 的分配,但是再次处理该临时对象,以便您再也看不到''

你应该怎么做:

不要在第一个函数中设置字符串,而是设置一个空对象。还可以为变量使用更好的名称:

bar