考虑以下代码:
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);
答案 0 :(得分:3)
使用bracket notation将该类称为字符串。
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']();