2012-10-05 33 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在那里作为一个常量标识符对待,并且不进行评估。