2011-07-04 53 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 ...})();' –