Javascript 使用period访问对象';s属性,但未定义

Javascript 使用period访问对象';s属性,但未定义,javascript,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", lastNam

我正在学习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"); var-friends={}; 朋友们。比尔={ 名字:“比尔”, 姓:“盖茨”, 编号:“(206)555-5555”, 地址:['One Microsoft Way'、'Redmond'、'WA'、'98052'] }; friends.steve={ 名字:“史蒂夫”, 姓氏:“乔布斯”, 编号:“(408)555-5555”, 地址:['1无限循环','Cupertino','CA','95014'] }; 变量列表=功能(obj){ 用于(obj中的var prop){ 控制台日志(道具); } }; var search=函数(名称){ 对于(朋友中的var prop){ 控制台日志(道具); console.log(friends.prop);//将打印出friends[prop] } }; 名单(朋友); 搜索(“史蒂夫”); console.log(friends.prop)将打印未定义,但如果我将其更改为

朋友[prop],它将打印账单和史蒂夫对象信息

我看到w3c教程说有两种访问方法是正确的,我无法理解

有什么问题

Thx提前

数组表示法(
[prop]
)提供了一种额外的间接层次,一种反射类型

所以,
friends.bill
friends[“bill”]
是相同的。但是,如果你想做一些像
var-prop='bill'
,那么使用它的唯一方法就是作为
friends[prop]


如果您尝试
friends.prop
,您实际上是在要求它查找名为“prop”的朋友。

在使用类似对象的变量时,您需要使用括号表示法,因此只需将
friends[prop]
用作
friends.prop
就永远不会起作用。