访问嵌套对象的属性

时间:2014-05-25 17:08:50

标签: javascript

我是Javascript的新手,目前正在codecademy.com上学习

以下是我不理解的部分:

var friends = {};

friends.bill={};
friends.steve={};

friends.bill={
    firstName:"Bill",
    lastName:"Will",
    number:4164567889,
    address: ['298 Timberbank blvd', 'scarborough', 'ontario']
};

friends.steve={
    firstName:"Steve",
    lastName:"Evan",
    number:4161233333,
    address: ['111 Timberbank blvd', 'scarborough', 'ontario']


for ( var keys in friends){
    console.log(keys);                      // 1. returns 2 objects of friends(bill, steve)
    console.log(keys.firstName);            // 2. why is this wrong?
    console.log(friends[keys].firstName);   // 3. why the properties has to be accessed in this way?
}

到目前为止,我唯一可以假设的是“for..in”循环返回“friends”中对象的数组。这就是为什么必须使用[]表示法来访问它。如果我错了,请纠正我。谢谢

1 个答案:

答案 0 :(得分:2)

for...in循环遍历对象的

所以keys是字符串“bill”或“steve”,而不是你的朋友对象。因此keys.firstName评估为"bill".firstName"steve".firstName,这当然毫无意义。

要获取好友对象中关键字“bill”的对象,您可以使用friends.bill,也可以使用friends['bill']。 Bot表达式是相同的,但后者允许您使用变量而不是编译时已知的字符串。因此,您可以使用keys代替'bill',如下所示:friends[keys]。那么这实际上就是你朋友的对象。