我有一个通过AJAX通过AJAX从服务器创建的对象。该对象有几个子对象的数组,例如:需要时动态创建子对象和数组
obj.subObj1[0].value="abc";
obj.subObj1[1].value="abc";
obj.subObj2[0].value="abc";
现在我想在这种对象设置一些值,但我不知道他们是否已经存在。
obj.subObj1[0].value="new Value"; // No Problem
obj.subObj2[1].value="new Value2"; // Problem because obj.subObj2[1] is no Object.
我需要做的第一obj.subObj2[1]={}
。
因为我经常遇到这个问题,所以我正在寻找使这个自动化的方法。一种方法或类,它会自动创建所需的对象(如果我使用整数,则为数组)。
它应该能够处理这种子对象的无限深度。像这样:
var obj = TheObject();
obj.sub1.sub2[10].sub3[1].sub4='value';
现在自动创建所有需要的子对象和数组。
+1 nice answer :) – Marwan 2011-12-31 11:22:08
这适用于极限示例。我正在寻找一个通用的解决方案,用于对象中的无限深度。我也想做 obj.some [0] .other [1] .another.value 等等。 – 2011-12-31 12:56:16
这实际上并不是你问的,但你可以稍微改变你的问题以反映这一点。为了做这样的事情,我会想象你需要一个字符串解析函数来自动创建适当的对象和数组变量。结果调用看起来像这样:parentObject = createBlueSmoke(“obj.some [0]。其他[1] .another.value“,”某个值“); – abelito 2011-12-31 13:14:56