我有以下代码:
var string = {
nameString : "nameValue",
nameString2 : "nameValue2",
nameString3 : "nameValue3",
datathing : 0,
};
var data = {
data : 1,
dataNum2 : 2,
dataNum3 : 3,
dataNum4 : 4,
};
var thing = {
datathing1 : 10,
datathing2 : 20,
datathing3 : 30,
datathing4 : 40,
};
var object = {
object1 : string,
data1 : data,
thing1 : thing,
};
为什么这两种方法都无法访问数据:
alert("testReference= " + object['object1']['string']['nameString']);
alert("testReference= " + object.object1.string.nameString);
我无法理解,即使以下类似示例和教科书明确指出它们应该起作用:
Accessing nested JavaScript objects with string key
预先感谢您的任何投入!
我目前正在构造一个对象并将其传递,“for in”将显示值,但“typeof”测试或我尝试访问的任何其他方式将不起作用,否则我将遇到错误(这会破坏程序,我认为),否则我会得到“未定义”。
如果解决了这件事的最后一件事,就是可以嵌套一个与其父名称名称值相同的键,例如data.data-这导致进一步嵌套的可能性,例如data.data.data ...
最佳答案
让我们看一下每个示例的问题所在,然后看一下正确的工作方式。
示例1 object['object1']['string']['nameString']
object['object1']
返回对象string
,对吗?因此,让我们替换掉大的部分来简化它。这将使我们更容易理解。 string['string']['nameString']
。 string
没有名为'string'的成员,因此string['string']
返回undefined
。 undefined
当作一个对象时,会出现错误! 示例2
object.object1.string.nameString
object.object1
返回对象string
,对吗?因此,让我们替换掉大的部分来简化它。这将使我们更容易理解。 string.string.nameString
。 string
没有名为'string'的成员,因此string.string
返回undefined
。 undefined
当作一个对象时,会出现错误! 您想要什么
object.object1.nameString
(或object['object1']['nameString']
)object.object1
返回对象string
,对吗?因此,让我们替换掉大的部分来简化它。这将使我们更容易理解。 string.nameString
,我们希望它返回"nameValue"
。