我有两个变量,一个包含有关对象的额外信息,名为 extra_info + 对象的 id。另一个持有该变量的名称:
selector = 'extra_info' + subscid;
我正在尝试访问存储在包含额外信息的变量中的数据,但我似乎无法访问它。愚蠢,我知道:-)
编辑:所以,我最终需要访问的变量的名称是:
extra_infoXXXXX
其中 XXXXX 存储在 subscid 中。
我有两个变量,一个包含有关对象的额外信息,名为 extra_info + 对象的 id。另一个持有该变量的名称:
selector = 'extra_info' + subscid;
我正在尝试访问存储在包含额外信息的变量中的数据,但我似乎无法访问它。愚蠢,我知道:-)
编辑:所以,我最终需要访问的变量的名称是:
extra_infoXXXXX
其中 XXXXX 存储在 subscid 中。
没有引号:
selector = extra_info + subscid;
或者,我不愿意提出这个建议,因为这是一个糟糕设计的危险信号,你可以使用eval()
:
selector = eval('extra_info' + subscid);
编辑
听起来您应该将您的存储extra_info
在一个数组对象中,并subscid
为其索引属性!
要访问,请执行类似extra_info[subscid]
.
编辑:
从您的评论中:
extra_infoXXXXX 包含一个字符串
...听起来 if subscid
contains "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'];
为了让变量像这样,
selector = extra_info+""+subscid['XXX']