2012-10-05 55 views
1

我試圖創建一個JavaScript關聯對象,每一件事工作正常,但 變量傳遞創建屬性名稱不工作,而不是存儲變量值的變量轉換成字符串,並顯示出不同自己命名。建立出錯的JavaScript對象屬性

快速樣品下面

var users = {}; 
var genID = someId; 

createObj('userID', function(userID, username, email) { 
users[userID] = { genID: { a: a, b: b, c: c, d: d } }; 
}) 

預期結果;

users = { 1: { 11: { a: 1, b: 2, c: 3, d: 4 } } } 

獲得結果;

users = { 1: { genID: { a: 1, b: 2, c: 3, d: 4 } } }​ 

請幫我解決這些問題。謝謝。

回答

2

如果你看看你做了什麼。第一件事情:users[userID]。但是,第二個genID沒有。這是因爲當你使用對象表示法時,它假定你輸入的是'name'而不是一個變量,所以它不能解決這個問題。更好的將是:

var obj = {}; 
obj[genID] = {a: a, b: b, c: c, d: d}; 
users[userID] = obj; 
+0

非常感謝,我浪費了我的時間調試這些和通過互聯網搜索ans,最後你的答案解決了這個問題。謝謝.. – sravis

+0

小問題,有沒有像javascript關聯對象存儲大小限制的東西? – sravis

+0

:)如果有的話,我還沒有打它,我有時做了一些非常大的物體。別擔心,一旦到達那裏,就穿過那座橋。這樣您就可以浪費時間瀏覽您可能不需要的信息。剛剛完成項目:) – Mutahhir

0
users[userID] = {}; 
users[userID][genID] = { { a: a, b: b, c: c, d: d } }; 
2

需要方括號語法:

users[userID] = {}; 
users[userID][genID] = { a: a, b: b, c: c, d: d }; 

基本上genID必須使用其中表達預期(方括號內)。當預期對象文字時,您在左側使用它。 genID在那裏作爲一個常量標識符對待,並且不進行評估。