访问名称在另一个变量中的变量的内容

时间:2013-05-03 06:04:11

标签: javascript

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

selector = 'extra_info' + subscid;

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

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

extra_infoXXXXX

其中XXXXX存储在subscid中。

3 个答案:

答案 0 :(得分:2)

没有引号:

selector = extra_info + subscid;

或者,我不愿意这样做,因为它是设计糟糕的红旗,你可以使用eval()

selector = eval('extra_info' + subscid);

(Obilgatory "eval is evil" link)


修改

听起来你应该将extra_info存储在数组对象中,其索引属性为subscid

要访问,请执行extra_info[subscid]

之类的操作

答案 1 :(得分:2)

修改

来自你的评论:

  

extra_infoXXXXX持有一个字符串

...听起来如果subscid包含"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'];

答案 2 :(得分:-1)

要使变量像这样,

selector = extra_info+""+subscid['XXX']