Pregunta

Considere este código:

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

y quiero crear la clase mootools con un nombre dinámico. Por supuesto que puedo hacerlo por eval:

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

pero yo no creo que es una buena solución. La forma de hacerlo de una manera "correcta"? Tal vez somethink como:

var obj = ObjectFactory(classes[0], params);
¿Fue útil?

Solución

Utilice el soporte notación para referirse a la clase como una cadena.

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

pasarle parámetros tan regular.

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

En lugar de crear todas las clases a nivel mundial, usar un objeto de espacio de nombres de ellos.

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

var object = new My['SomeClass']();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top