我正在尝试做与此相同的事情,但在 JS 中。
$className = 'MyClass';
$obj = new $className();
我已经尝试过明显的事情但没有运气,目前使用 eval 如下:/
eval('var model = ' + modelName + '();');
谢谢!
最佳答案
对于全局“类”,使用:
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`
对于没有附加到命名空间的私有(private)方法,除了 eval 或 Function 之外没有其他解决方案:
var classname = "nonglobal";
var obj = new (Function(classname))();
你应该避免 eval
只要有可能,尤其是当您使用未知字符串时。
关于Javascript 对象实例化类似于 php new $className();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621410/