Javascript 访问变量who';的名称在另一个变量中

Javascript 访问变量who';的名称在另一个变量中,javascript,Javascript,我有两个变量,一个保存关于对象的额外信息,名为extra_info+对象的id。另一个保存该变量的名称: selector = 'extra_info' + subscid; 我试图访问保存额外信息的变量中存储的数据,但似乎无法访问它。愚蠢,我知道:-) 编辑:因此,我最终需要访问的变量的名称是: 额外信息XXXXX 其中XXXXX存储在subscid中。无引号: selector = extra_info + subscid; 或者,我不愿意提出这个建议,因为这是坏设计的危险信号,您可以使

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

selector = 'extra_info' + subscid;
我试图访问保存额外信息的变量中存储的数据,但似乎无法访问它。愚蠢,我知道:-)

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

额外信息XXXXX

其中XXXXX存储在subscid中。

无引号:

selector = extra_info + subscid;
或者,我不愿意提出这个建议,因为这是坏设计的危险信号,您可以使用
eval()



编辑

听起来您应该将您的
额外信息
存储在数组对象中,其索引属性为
subscid

要访问,请执行类似于编辑的操作:

根据您的评论:

extra_infoXXXXX包含一个字符串

…听起来像是如果
subscid
包含
“foo”
,您想获取
extra\u infofoo
的值。如果是这样,你需要一个对象来查找它;否则,您将被迫使用
eval

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

selector = window['extra_info' + subscid];
如果没有,我不想说,你就只能用
eval

selector = eval('extra_info' + subscid);
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"];
…或使用括号表示法和字符串属性名称:

x = foo.bar;
x = foo["bar"];
在第二种情况下,字符串可以是任何表达式的结果。例如:

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

x = foo['b' + 'a' + 'r'];

为了让孩子们像这样做

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

它是在一个不同的函数中,还是它们都在同一个空间中?这里subscid是一个变量?
extra\u info
包含什么样的“额外信息”。它是一根绳子吗?一个对象?与其声明许多
extra\u infoXXXXX
变量,不如声明一个
extra\u info
对象
var extra_info={XXXXX:'some data'}
然后假设
subscid='XXXXX'
您可以使用
extra_info[subscid]
来获取
一些数据。简单的答案是:不要这样命名变量,将值存储在数组中。解决方案,如果你真的想这么做的话:看看我的(被否决的)答案。没有解释的否决票=最好的。事实上,当他们这么做的时候,你讨厌它!至于变量:-)我现在把它全部存储在一个数组中。它实际上在做什么,我有一个带有表单的页面。这将执行一个ajax请求,并以紧凑的形式显示结果。我希望完整的详细信息(存储在extra_info[])显示在一个覆盖图中,该覆盖图在单击时加载。因此,我的AJAX returnscript添加了一个额外的_info={xxx='the info'};对于每一个结果,@fabriciomatté,这是不准确的。它是未定义的,因为函数不返回任何内容。尝试
(函数(){var foo=42;返回eval('foo');}()@DaggNabbit哦,我站着更正。我以为我放了一个
控制台。log
在那里,我的坏消息。删除了之前评论中的误导性信息。@T.J.Crowder-terminology=important。编辑。也不知道为什么用感叹号。我想灯泡的时刻让我不知所措。我想他在寻找
窗口['extra_info'+subscid]
,但如果变量在不同的范围内,我想OP需要一个对象。嘿,T.J.,同时,我选择了你的第二个建议:重新设计,并存储在对象/数组中。@Borniet:好交易。但请注意,它不是数组,而是对象。extra_info不是数组,我需要的变量名是extra_infoxxx,其中xxx存储在其中subscid@SrikanthManian-看我的答案。@Steve这也是我的原始答案,然后Borniet评论说变量的另一半在SubCID中,因此编辑了我的答案。