JavaScript的属性访问表达式

时间:2012-08-29 08:03:43

标签: javascript arrays object properties expression

我正在阅读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?这让我感到困惑......

提前感谢任何评论或回答...

3 个答案:

答案 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,它是一样的。