2014-05-25 207 views
0

我是新来的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”循环返回“朋友”中的对象数组。这就是为什么它必须使用[]符号来访问。纠正我,如果我错了。谢谢

+1

您可以阅读MDN文档中的任何JS语法构造:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in。 –

+0

@FelixKling,thx的信息 – shensw

回答

2

for...in循环迭代对象的

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

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