BTW : window est la référence à l'objet global dans le navigateur JavaScript. Qui est aussi this
et devrait fonctionner même dans des environnements autres que les navigateurs, tels que Node.js, les extensions Chrome, le code transposé, etc.
var obj = new this[classNameString]();
La limitation est que la classe appelée doit être dans le contexte global. Si vous voulez appliquer la même chose à une classe scopée, vous devez le faire :
var obj = (Function('return new ' + classNameString))()
Cependant, il n'y a pas vraiment de raison d'utiliser une chaîne de caractères. Les fonctions JavaScript sont elles-mêmes des objets, tout comme les chaînes de caractères qui sont également des objets.
Modifier
Voici une meilleure façon d'obtenir la portée globale qui fonctionne en mode strict ainsi que dans les environnements JS sans navigateur :
var global;
try {
global = Function('return this')() || (42, eval)('this');
} catch(e) {
global = window;
}
// and then
var obj = new global[classNameString]
De : Comment obtenir l'objet global en JavaScript ?