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。
nyc.key查找具有名称的属性key,而不是变量中具有名称的属性key。您的第一个示例nyc[key]是使用变量中的属性名称的正确方法。
在 JavaScript 中,您可以使用点表示法和属性名称文字( obj.foo) 或方括号表示法和属性名称字符串( obj["foo"])来访问对象属性。在第二种情况下,您可以使用任何表达式来获取字符串,包括变量查找。(在 ES6 中,您也可以将Symbols 与括号表示法一起使用,但这与此处无关。)