考虑此代码:

var Someclass = new Class();
var Anotherclass = new Class();
var classes = ['Someclass', 'Anotherclass'];

我想创建具有动态名称的Mootools类。当然,我可以通过评估来做到:

eval('var obj = new ' + classes[0] + '(params);');

但是我认为这不是一个很好的解决方案。如何以“正确”的方式进行操作?也许会像:

var obj = ObjectFactory(classes[0], params);
有帮助吗?

解决方案

使用 支架符号 将课程称为字符串。

var object = new window['SomeClass']();

将IT参数作为常规传递。

var object = new window['SomeClass'](1, 2, "three");

而不是在全球创建所有类,而是使用对象来命名它们。

var My = {
    SomeClass: new Class(..),
    OtherClass: new Class(..)
};

var object = new My['SomeClass']();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top