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",
  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.billfriends["bill"] 将是相同的。但是,如果您想执行类似 var prop = 'bill' 的操作,那么使用它的唯一方法是作为 friends[prop]

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

关于javascript - 使用句点访问对象的属性但未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055522/

相关文章:

javascript - 如何在javascript中编码/解码ascii85

javascript - javascript 混淆函数中的++i 与 i++

javascript - 如何将任何图像转换为 webp?

javascript - 从 iFrame 关闭 jquery 对话框

javascript - 按钮链接加载后 JS 确认弹出窗口

javascript - onkeydown 事件在 Canvas 上不起作用?

javascript - Firebase CORS、白名单 IP 范围

javascript - 如何从字典中填充大型数据列表(~2000 项)

javascript - 预览图像和 Canvas

javascript - 具有嵌套 Controller 和 "controller as"语法的表单