Domanda

Si consideri questo codice:

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

e voglio creare classe mootools con un nome dinamico. Naturalmente posso farlo da eval:

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

ma io non credo che sia una buona soluzione. Come fare questo in modo "adeguato"? Forse somethink come:

var obj = ObjectFactory(classes[0], params);
È stato utile?

Soluzione

Utilizza la staffa notazione per riferirsi alla classe come una stringa.

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

passarlo parametri come normale.

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

Invece di creare tutte le classi globalmente, utilizzare un oggetto in spazi dei nomi loro.

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

var object = new My['SomeClass']();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top