Javascript对象实例化类似于php new $ className();

时间:2011-10-01 16:15:18

标签: javascript constructor

我试图在JS中做相同的事情。

$className = 'MyClass';
$obj = new $className();

我尝试过显而易见的事情,但没有运气,目前使用eval如下:/

eval('var model = ' + modelName + '();');

谢谢!

2 个答案:

答案 0 :(得分:5)

对于全局“类”,请使用:

var classname = "Date";
var obj = new window[classname]();

window是全局命名空间。在<script>内立即定义的变量和方法,没有包装器,会自动存储在全局命名空间中。

对于其他“名称空间”的方法,请使用:

var classname = "round";
var obj = new Math[funcname]();
// Illustrative purposes only, Math doesn't need `new`

对于未附加到命名空间的私有方法,除了eval或Function之外没有其他解决方案:

var classname = "nonglobal";
var obj = new (Function(classname))();

尽可能避免使用eval,尤其是在使用未知字符串时。

答案 1 :(得分:1)

请参阅此问题以获得良好的回答:Dynamic Object Creation

但基本上你想要return new window[modelName];