1

我有两个变量,一个包含有关对象的额外信息,名为 extra_info + 对象的 id。另一个持有该变量的名称:

selector = 'extra_info' + subscid;

我正在尝试访问存储在包含额外信息的变量中的数据,但我似乎无法访问它。愚蠢,我知道:-)

编辑:所以,我最终需要访问的变量的名称是:

extra_infoXXXXX

其中 XXXXX 存储在 subscid 中。

4

3 回答 3

2

没有引号:

selector = extra_info + subscid;

或者,我不愿意提出这个建议,因为这是一个糟糕设计的危险信号,你可以使用eval()

selector = eval('extra_info' + subscid);

(强制性的“评估是邪恶的”链接)


编辑

听起来您应该将您的存储extra_info在一个数组对象中,并subscid为其索引属性!

要访问,请执行类似extra_info[subscid].

于 2013-05-03T06:05:07.670 回答
2

编辑

从您的评论中:

extra_infoXXXXX 包含一个字符串

...听起来 if subscidcontains "foo",您想获得extra_infofoo. 如果是这样,您将需要一个对象来查找它;否则,您将被迫使用eval.

如果这些extra_infoxxxx变量是全局变量,您可以在窗口中查找它们:

selector = window['extra_info' + subscid];

如果没有,我不想说,你被困在eval

selector = eval('extra_info' + subscid); // Blech

但请注意,如果您这样做,最好退后一步重新评估(不是双关语!)您的设计。例如,也许您可​​以创建一个带有额外信息作为属性的对象:

var extra_info = {
    foo: "bar"
};

然后你可以像这样查找信息:

selector = extra_info[subscid];

原答案

从您提供的信息中很难判断,但我认为您正在寻找:

selector = extra_info[subscid];

...假设包含您要访问subscid的属性的名称。extra_info

在 JavaScript 中,您可以使用点分表示法和文字属性名称访问对象上的属性:

x = foo.bar;

...或使用括号表示法和字符串属性名称:

x = foo["bar"];

在第二种情况下,字符串可以是任何表达式的结果。例如:

b = "bar";
x = foo[b];

甚至

x = foo['b' + 'a' + 'r'];
于 2013-05-03T06:07:45.983 回答
-1

为了让变量像这样,

selector = extra_info+""+subscid['XXX']
于 2013-05-03T06:08:54.967 回答