1

我正在尝试创建一个 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 } } }​

请帮我解决这些问题。谢谢你..

4

3 回答 3

2

您需要方括号语法:

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

基本上genID必须在需要表达式的地方使用(在方括号内)。当需要对象文字时,您在左侧使用它。genID在那里被视为常量标识符,并且不被评估。

于 2012-10-05T18:59:50.720 回答
2

如果你看看你做了什么。第一件事起作用了:users[userID]。然而,第二个genID没有。那是因为当您使用对象表示法时,它假定您输入的是“名称”而不是变量,所以它不能解决这个问题。更好的是:

var obj = {};
obj[genID] = {a: a, b: b, c: c, d: d};
users[userID] = obj;
于 2012-10-05T19:00:04.257 回答
0
users[userID] = {};
users[userID][genID] = { { a: a, b: b, c: c, d: d } };
于 2012-10-05T18:59:14.387 回答