使用句点访问对象的属性但未定义

时间:2013-02-24 19:16:12

标签: javascript

我正在进行codecademy的javascript教程并遇到以下问题:

var friends = {};
friends.bill = {
  firstName: "Bill",
  lastName: "Gates",
  number: "(206) 555-5555",
  address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
  firstName: "Steve",
  lastName: "Jobs",
  number: "(408) 555-5555",
  address: ['1 Infinite Loop','Cupertino','CA','95014']
};
var list = function(obj){
    for(var prop in obj){
        console.log(prop);
    }
};
var search = function(name) {
  for(var prop in friends){ 
        console.log(prop);
        console.log(friends.prop);//friends[prop] will print out 

  }


};
list(friends);
search("Steve");

console.log(friends.prop)将打印出undefined但如果我将其更改为

朋友[prop],它会打印出账单并窃取对象信息。

我看到w3c教程说两种访问方法是正确的,我无法弄清楚

问题是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

数组表示法([prop])提供了额外的间接级别,即一种反射。

因此,friends.billfriends["bill"]会完全相同。但是,如果你想做var prop = 'bill'之类的事情,那么使用它的唯一方法就是friends[prop]

如果您尝试friends.prop,那么您确实要求它寻找名为“prop”的朋友。