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