Как создать класс MooTools для имени переменной

Рассмотрим этот код:

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);

1 ответ

Решение

Используйте обозначение в скобках для ссылки на класс в виде строки.

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']();
Другие вопросы по тегам