2017-08-11 37 views
0

我在我的javavscript代碼中有多個Hashmap,我試圖根據傳遞給該函數的名稱動態加載相關的映射。Javascript無法使用字符串名稱引用Hashmap

問題是,當我將值作爲字符串值傳遞時,它實際上試圖獲取字符串的鍵而不是它引用的對象。

jsfiddle正確地說明了我的問題。

Line 13給出了預期的輸出,而Line 14從字符串名稱中創建了鍵。

+1

創建另一個地圖,將名稱與相關對象或濫用相關聯,即全局變量是這個特殊情況下'window'的屬性 – ASDFGerte

+0

Object.keys(window [name]),但是你的代碼沒有意義 –

+0

@Jonasw I'米不確定你到底是什麼意思?我試圖將我的代碼的相關部分添加到小提琴 – anonn023432

回答

0

其基本上之間的差:

Object.keys(PROP_ONE) 

Object.keys("PROP_ONE") 

雖然第一是解析爲對象的標識符,第二個是隻是一個字符串。不多。您可以使用括號來訪問它由於該窗口中其作用:

Object.keys(window["PROP_ONE"]) 

免責聲明:

總而言之,動態密鑰應該只如果真的neccessary使用。他們讓你的代碼更慢,更多的bug。