2011-07-04 56 views
3

我想要做这样的事情:使用new运算符与变量

var foo = function(){ 
    this.value = 1; 
} 
var bar = "foo"; 
var baz = new bar(); 
alert(baz.value)  // 1 

从本质上讲,我想从它的名字的字符串版本创建一个新的对象。有任何想法吗?

回答

1
var foo = function(){ 
    this.value = 1; 
}; 
var bar = "foo"; 
var baz = new this[bar](); // "this" here refers to the global object (you could also use "window", but "this" is shorter) 
alert(baz.value)  // 1 

参见http://blog.brett-zamir.me/?p=24

+0

假设这是一个全局变量:) – alex

+0

是。否则,没有通用的本地作用域对象可用于脚本。 –

+0

如果你不在全球范围内,你会怎么做?例如,如果我们将该代码片段封装到一个自动执行的函数中,该怎么办:'(function(){... snippet ...})();' –