我正在阅读JavaScript权威指南,并且有代码:
var o = {x:1,y:{z:3}}; // An example object
var a = [o,4,[5,6]]; // An example array that contains the object
o.x // => 1: property x of expression o
o.y.z // => 3: property z of expression o.y
o["x"] // => 1: property x of object o
a[1] // => 4: element at index 1 of expression a
a[2]["1"] // => 6: element at index 1 of expression a[2]
a[0].x // => 1: property x of expression a[0]
除了最后一行之外,这些都不是我的问题。 a [0] .x如何评估为1?没有属性x属于多维数组'a'。我不明白这一点。在'o'中找到属性[0] .x?这让我感到困惑......
提前感谢任何评论或回答...
答案 0 :(得分:3)
第一行定义o
,第二行定义a[0]
为o
,所以我们有......
a[0] === {x:1,y:{z:3}};
因此:
a[0].x === 1;
这也意味着以下情况:
a[0].y.z === 3;
所以你说a[0].x
中找到属性o
是正确的。
答案 1 :(得分:1)
a[0]
等于对象o
,你理解第3行,哪里有问题?
答案 2 :(得分:1)
'a'是一个数组,因此'a'可以存储多个值,并且每个值都存储在唯一的位置。要从数组中获取值,您必须知道它存储在何处(在什么位置)。为了得到你的例子,你有一个名为a:
的数组var a = [o,4,[5,6]];
当向数组添加值时,默认情况下它们存储在从0开始的位置。因此在数组a 0位置有一个对象o(在此语句之前定义一行),在位置1上有一个值4 ,在位置2,还有另一个数组[5,6]。
要从数组中获取值,您需要知道它的位置,所以要从数组a中获取对象o,您只需要写:
一个[0]
所以这与使用对象o相同(因为o在此数组中的位置0)。
对象具有属性。从必须使用的对象获取属性。 (点)运算符(还有其他方法)。所以要从对象o获取属性x,你需要写这个:
o.x
并得出结论,通过写一个[0] .x,你只是说给我o.x,它是一样的。