我试图在JS中做相同的事情。
$className = 'MyClass';
$obj = new $className();
我尝试过显而易见的事情,但没有运气,目前使用eval如下:/
eval('var model = ' + modelName + '();');
谢谢!
答案 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];