0

考虑这段代码:

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

我想创建一个动态名称的 mootools 类。当然我可以通过 eval 做到这一点:

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

但我认为这不是一个好的解决方案。如何以“正确”的方式做到这一点?也许有人认为:

var obj = ObjectFactory(classes[0], params);
4

1 回答 1

3

使用括号表示法将类称为字符串。

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

将其参数作为常规传递。

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

不要在全局范围内创建所有类,而是使用一个对象来命名它们。

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

var object = new My['SomeClass']();
于 2010-09-10T16:46:22.923 回答