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

pur*_*dpd 0 javascript oop for-loop object

考虑以下对象:

var nyc = {
fullName: "New York City",
mayor: "Bill de Blasio",
population: 8000000,
boroughs: 5
};
Run Code Online (Sandbox Code Playgroud)

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

for(var key in nyc){
console.log(nyc[key]);
}
Run Code Online (Sandbox Code Playgroud)

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

for(var key in nyc){
console.log(nyc.key);
}
Run Code Online (Sandbox Code Playgroud)

在 4 行上返回“未定义”

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

console.log(nyc.fullName);
console.log(nyc['fullName']);
Run Code Online (Sandbox Code Playgroud)

给出相同的o/p。

T.J*_*der 5

nyc.key查找具有名称的属性key而不是变量中具有名称的属性key。您的第一个示例nyc[key]是使用变量中的属性名称的正确方法。

在 JavaScript 中,您可以使用点表示法和属性名称文字( obj.foo) 或方括号表示法和属性名称字符串( obj["foo"])来访问对象属性。在第二种情况下,您可以使用任何表达式来获取字符串,包括变量查找。(在 ES6 中,您也可以将Symbols 与括号表示法一起使用,但这与此处无关。)