Вопрос

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

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);
Это было полезно?

Решение

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

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']();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top