0
我在我的javavscript代碼中有多個Hashmap,我試圖根據傳遞給該函數的名稱動態加載相關的映射。Javascript無法使用字符串名稱引用Hashmap
問題是,當我將值作爲字符串值傳遞時,它實際上試圖獲取字符串的鍵而不是它引用的對象。
這jsfiddle正確地說明了我的問題。
Line 13
給出了預期的輸出,而Line 14
從字符串名稱中創建了鍵。
我在我的javavscript代碼中有多個Hashmap,我試圖根據傳遞給該函數的名稱動態加載相關的映射。Javascript無法使用字符串名稱引用Hashmap
問題是,當我將值作爲字符串值傳遞時,它實際上試圖獲取字符串的鍵而不是它引用的對象。
這jsfiddle正確地說明了我的問題。
Line 13
給出了預期的輸出,而Line 14
從字符串名稱中創建了鍵。
其基本上之間的差:
Object.keys(PROP_ONE)
和
Object.keys("PROP_ONE")
雖然第一是解析爲對象的標識符,第二個是隻是一個字符串。不多。您可以使用括號來訪問它由於該窗口中其作用:
Object.keys(window["PROP_ONE"])
免責聲明:
總而言之,動態密鑰應該只如果真的neccessary使用。他們讓你的代碼更慢,更多的bug。
創建另一個地圖,將名稱與相關對象或濫用相關聯,即全局變量是這個特殊情況下'window'的屬性 – ASDFGerte
Object.keys(window [name]),但是你的代碼沒有意義 –
@Jonasw I'米不確定你到底是什麼意思?我試圖將我的代碼的相關部分添加到小提琴 – anonn023432