0

我正在阅读 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?不存在属于多维数组“a”的属性 x。我不明白这一点。是否在“o”中找到属性 a[0].x?这让我很困惑......

提前感谢您的任何评论或答案...

4

3 回答 3

3

第一行定义o,第二行定义a[0]o,所以我们有...

a[0] === {x:1,y:{z:3}};

所以:

a[0].x === 1;

这也意味着以下情况为真:

a[0].y.z === 3;

所以你说a[0].xo.

于 2012-08-29T08:05:56.010 回答
1

a[0]等于 objecto并且您了解第 3 行,问题出在哪里?

于 2012-08-29T08:07:09.620 回答
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,你需要这样写:

总结一下,写 a[0].x 你只是说给我牛,这是一回事。

于 2012-08-29T08:20:34.167 回答