Как создать класс 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']();