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

标签 javascript constructor

我正在尝试做与此相同的事情,但在 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/

相关文章:

javascript - 生成以数组为值的 javascript 对象?

javascript - 同一页面的不同 OnMouseEnter 事件

java - 在 Java 构造函数中设置数据时出现 NullPointerException

java存储实例变量并使用键值之一进行访问

c++ - 在 Cocos2D-X 中创建带有新成员的图层?

javascript - 当我按下获取路由按钮时,我希望我的 javascript 变量存储在数据库中

javascript - 谷歌地图标记 API 标记的标题

javascript - 在面板或 htmleditor 内创建编号编辑器

c++ - 无法访问类 'Soldier' 中声明的私有(private)成员

c# - 如何使泛型类成为另一个实例类中的属性?