2017-06-28 29 views
1

爲什麼這不起作用?爲什麼我可以用[val]訪問js對象但不是.val?

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"); 

爲什麼在訪問對象時使用點操作不能與動態輸入工作?

+1

'lookup.val'相當於'lookup [「val」]' –

回答

0

lookup.val尋找val key裏面查找哪些不存在這就是爲什麼它不工作,你需要做lookup.charlie。另外,lookup [val] = lookup ['charlie']所以它可以工作。

+0

啊我明白了。你是對的。謝謝! – earthyearth

+0

歡迎您,考慮接受答案,如果它有幫助。乾杯! – Dij

-1

您的對象中沒有val命名屬性。當您嘗試訪問object.val時,它會通過流利的語言查找對象中的val命名屬性。

當你動態傳遞屬性名稱。第二個是因爲它嘗試通過字符串名稱訪問屬性。

相關問題