引用嵌套的JavaScript对象 [英] Reference Nested JavaScript Object
问题描述
我有这段代码:
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);
我无法理解,即使下面找到类似的例子,教科书明确说明它们应该有效: / p>
提前感谢任何输入!
我正在构建一个对象并传递它,'for in'将提出值,但'typeof'测试或我尝试访问的任何其他方式将无法工作,要么我会遇到错误(这打破了程序,我认为)或我得到'未定义'....
如果这个问题得到解决,最后一件事就是嵌套一个与其父名相同的名称的密钥,例如data.data - 这导致了进一步嵌套的可能性,例如data.data.data ...
让我们来看看每个例子都有什么问题,然后采取看看哪种方式正常。
示例1
object ['object1'] ['string'] ['nameString']
-
我们希望
object ['object1']
返回对象string
,对吧?因此,让我们通过替换它的一部分来简化大表达式。这将使我们更容易理解。 -
所以现在我们有
string ['string'] ['nameString']
。 -
但是
字符串
没有名为'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
。 -
确实如此!
I have this code:
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,
};
Why do neither of these means to access the data work:
alert("testReference= " + object['object1']['string']['nameString']);
alert("testReference= " + object.object1.string.nameString);
I cannot understand it, even though similar examples found below and textbooks state explicitly that they should work:
Accessing nested JavaScript objects with string key
Thanks in advance for any input!
I am currently constructing an object and passing it around, a 'for in' will bring up the values but a 'typeof' test or any other way I try and access will not work, either I will encounter an error (which breaks the program, I think) or I get 'undefined'....
One last thing if this gets solved, is it ok to nest a key that is the same name value as its parent, such as data.data - this leads to the possibility of further nesting such as data.data.data...
Let's look at what's wrong with each example, then take a look at the way that works right.
Example 1
object['object1']['string']['nameString']
We expect
object['object1']
to return the objectstring
, right? So lets simplify the big expression by replacing that part of it. That'll make it easier for us to understand.So now we have
string['string']['nameString']
.But
string
has no member called 'string', sostring['string']
returnsundefined
.And when you try to treat
undefined
as an object, you get an error!
Example 2
object.object1.string.nameString
We expect
object.object1
returns the objectstring
, right? So lets simplify the big expression by replacing that part of it. That'll make it easier for us to understand.So now we have
string.string.nameString
.But
string
has no member called 'string', sostring.string
returnsundefined
.And when you try to treat
undefined
as an object, you get an error!.
What You Want
object.object1.nameString
(or object['object1']['nameString']
)
We expect
object.object1
returns the objectstring
, right? So lets simplify the big expression by replacing that part of it. That'll make it easier for us to understand.So now we have
string.nameString
, and we expect that to return"nameValue"
.And it does!
这篇关于引用嵌套的JavaScript对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!