实例名称为变量

时间:2011-02-17 03:11:53

标签: javascript object

我搜索了这个网站并搜索过,但似乎无法找到答案。

我需要动态创建对象实例,其中实例名称作为变量提供,因此不是使用以下方式访问对象属性:

var n = 'abcd';

eval('var '+n+' = new myinst();');

abcd.property = value;

我需要使用变量访问:

['abcd'].property = value;

但这似乎不起作用 - 我错过了什么?

3 个答案:

答案 0 :(得分:2)

您可以使用数组表示法执行“变量变量”,但您需要为其提供上下文。在全球范围内,那将是window

var foo = 'bar';
window[foo] = new myinst();
window[foo].property = 'baz';
alert(bar.property);

window替换为变量变量应该存在的任何其他范围。变量变量实际上是一种不应该使用的反模式。

答案 1 :(得分:2)

您不应该以这种方式使用eval。您可以轻松地将“动态”变量分配给某个基础对象:

var baseObj = {};
var n = 'abcd';

baseObj[n] = new myinst();
baseObj[n].property = value;

这使您可以完全控制变量,包括delete它的能力,

delete baseObj[n];

或检查它是否存在,

n in baseObj;

答案 2 :(得分:0)

如果它是全球性的,您可以使用:

var n = 'abcd';
window[ n ] = new myInst();
window[ n ].property = value;