访问Javascript中嵌套在另一个对象中的对象的属性

访问Javascript中嵌套在另一个对象中的对象的属性,javascript,json,object,Javascript,Json,Object,我试图访问嵌套在对象中的对象的属性。我是否以错误的方式处理它,是语法错误,还是两者都有?我在里面有更多的“联系人”对象,但为了缩小这篇文章,我把它们去掉了 var friends = { steve:{ firstName: "Rob", lastName: "Petterson", number: "100", address: ['Thor Drive','Mere','NY','11230'] } }; //

我试图访问嵌套在对象中的对象的属性。我是否以错误的方式处理它,是语法错误,还是两者都有?我在里面有更多的“联系人”对象,但为了缩小这篇文章,我把它们去掉了

var friends = {
    steve:{
        firstName: "Rob",
        lastName: "Petterson",
        number: "100",
        address: ['Thor Drive','Mere','NY','11230']
    }
};

//test notation this works:
//alert(friends.steve.firstName);

function search(name){
    for (var x in friends){
        if(x === name){
               /*alert the firstName of the Person Object inside the friends object
               I thought this alert(friends.x.firstName);
               how do I access an object inside of an object?*/
        }
    }
}  

search('steve');
要么是

friends.steve.firstName

不过,您不需要for循环:

function search(name){
    if (friends[name]) alert(friends[name].firstName);
}

由于
x
是一个变量,您需要执行
friends[x].firstName
friends.x.firstname
将查找文本键
x
。这非常有意义,谢谢!关于类似主题的问题可能重复;为什么我不能用点符号<代码>//此函数用于搜索(名称){if(friends[name]){alert(friends[name].firstName);}//此函数不用于搜索(名称){if(friends.name){alert(friends.name.firstName);}@brooklynsweb-点表示法只能用于编写代码时已知的常量字符串。它不能用于存储在变量中的字符串。对于存储在变量或参数中的名称,可以使用
obj[varname]
表示法。@BrooklynSeb为了详细说明jfriend00写了什么……如果你写的是
friends.name
,JavaScript怎么知道你是指一个“名为(字面上)名的字段”还是一个“名为变量
name
”的字段?括号表示法允许你指定:
friend[name]
是一个“在变量
name
”中以任何形式命名的字段,而
friend[“name”]
是一个“称为(字面上)名称的字段”。
function search(name){
    if (friends[name]) alert(friends[name].firstName);
}