使用for循环访问javascript中的对象属性?

时间:2015-07-18 08:16:36

标签: javascript oop object for-loop

考虑以下对象:

var nyc = {
fullName: "New York City",
mayor: "Bill de Blasio",
population: 8000000,
boroughs: 5
};

当我尝试使用for循环访问每个属性时:

for(var key in nyc){
console.log(nyc[key]);
}

它返回正确的输出(属性值),但是......

for(var key in nyc){
console.log(nyc.key);
}

此返回"未定义" 4行

为什么奇怪的行为,因为两者:

console.log(nyc.fullName);
console.log(nyc['fullName']);

给予相同的o / p。

1 个答案:

答案 0 :(得分:4)

nyc.key查找名称为key属性的属性,其名称在变量key中。您的第一个示例nyc[key]是使用变量中的属性名称的正确方法。

在JavaScript中,您可以使用点表示法和属性名称​​ literal obj.foo)或括号表示法和属性名称​​ string 访问对象属性( obj["foo"])。在第二种情况下,您可以使用任何表达式来获取字符串,包括变量查找。 (在ES6中,您也可以使用带括号表示法的Symbol,但这里不相关。)