为什么我可以用[val]而不是.val来访问js对象?

时间:2017-06-28 05:18:03

标签: javascript

为什么这不起作用?

function phoneticLookup(val) {
 var result = "";
var lookup = {
"alpha": "Adams",
"bravo": "Boston",
"charlie": "Chicago",
"delta": "Denver",
"echo": "Easy",
"foxtrot": "Frank"
};
result = lookup.val;
return result;
}
phoneticLookup("charlie");

但是这样做

function phoneticLookup(val) {
 var result = "";
var lookup = {
"alpha": "Adams",
"bravo": "Boston",
"charlie": "Chicago",
"delta": "Denver",
"echo": "Easy",
"foxtrot": "Frank"
};
result = lookup[val];
return result;
}
phoneticLookup("charlie");

为什么在访问对象时使用点操作不能用于动态输入?

2 个答案:

答案 0 :(得分:0)

lookup.val查找内部查找的val键,这不存在,这就是为什么它不起作用,你需要做lookup.charlie。另外,查找[val] = lookup ['charlie']以使其有效。

答案 1 :(得分:-1)

您的对象中没有val个命名属性。当您尝试访问object.val时,它会通过流利的语言在您的对象中查找val命名属性。

当您动态传递属性名称时。第二个是工作,因为它试图通过字符串名称访问属性。