我在做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 但如果我将其更改为
friends[prop],会打印出bill和steve对象信息。
我看w3c教程说有两种访问方式是对的,我想不通
问题是什么?
提前致谢。
最佳答案
数组表示法 ([prop]
) 提供了一种额外的间接级别,一种反射。
因此,friends.bill
和 friends["bill"]
将是相同的。但是,如果您想执行类似 var prop = 'bill'
的操作,那么使用它的唯一方法是作为 friends[prop]
。
如果您尝试 friends.prop
,您实际上是在要求它寻找名为“prop”的 friend 。
关于javascript - 使用句点访问对象的属性但未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055522/