为什么有时使用点符号访问对象属性会返回未定义?

时间:2019-07-27 01:35:23

标签: javascript

我编写的此for-in循环为所有对象属性打印“ undefined”值:

let user = {
  id: 1,
  name: "Some name"
};
for (let prop in user)
  console.log(prop + ": " + user.prop);

控制台输出:

id: undefined
name: undefined

2 个答案:

答案 0 :(得分:1)

user.prop在用户对象上期望有一个名为prop的实际属性,如下所示:

let user = {
  prop: 'not undefined'
  id: 1,
  name: "Some name"
};

我猜您打算使用括号表示法来访问属性吗?

let user = {
      id: 1,
      name: "Some name"
    };
for (let prop in user)
  console.log(prop + ": " + user[prop]);

答案 1 :(得分:1)

您不能使用变量以这种方式访问​​对象属性。它认为您正在尝试访问一个名为“ prop”的属性。使用变量按名称获取对象属性的方式如下:

let user = {
  id: 1,
  name: "Some name"
};
for (let prop in user)
  console.log(prop + ": " + user[prop]);