2013-10-03 32 views
0

我有一个非常简单的问题,但我似乎无法找到它的任何地方的解决方案......的JavaScript对象实例化与变量名

基本上我想实例化一个新的JavaScript对象,但类名是一个变量。在PHP中,这个实现是非常直接的new $className()。我已经在Javascript中尝试了以下解决方案,但没有运气:

window.onload=function(){ 
function obj(){ 
    this.show = function(){ 
     console.log('Hallo World'); 
    } 
} 

var objs = ['obj']; 

new objs[0]().show(); 
} 

有没有人知道如何解决这个问题?

+0

[通过变量动态实例化一个类的可能的副本](http://stackoverflow.com/questions/923575/instantiate-a-class-dynamically-via-variable) – ComFreek

回答

3

随着代码如图所示,你不能没有eval

如果你愿意去改变它,您可以:

window.onload=function(){ 
    var things = { 
     obj: function(){ 
      this.show = function(){ 
       console.log('Hallo World'); 
      }; 
     } 
    }; 

    new things['obj']().show(); 
    // Or: new things.obj().show(); 
}; 
+0

没有看到你的答案,并发布相同无论如何,这是正确的。 –

1

这能否帮助你:

var creator = { 
    obj : function(){ 
     this.show = function(){ 
     console.log('Hallo World'); 
     }; 
    } 
} 
var myInstance = new creator['obj']; 
myInstance.show(); 

的想法是定义构造函数的属性。