Ich möchte in der Lage sein, eine bestimmte ES6-Klasse zu instanziieren, indem Sie eine String-Variable an eine Funktion übergeben. Abhängig vom Wert der Variablen wird eine andere Klasse erstellt.Erstellen Sie eine Instanz einer Klasse in ES6 mit einem dynamischen Namen?
Beispiel - Ich habe 2 Klassen, ClassOne
, ClassTwo
. Ich möchte in der Lage sein, eine Variable an eine Funktion zu übergeben und eine neue Klasse zurück zu bekommen. Der Name der Klasse wird auf die Variable bezogen - z. Passing 'Two'
wird ClassTwo
erstellen.
ich nicht will nur verwenden, um eine switch
Klausel wie folgt aus: mit dem Variablennamen
function createRelevantClass(desiredSubclassName)
{
let args = [],
newClass;
switch(desiredSubclassName)
{
case 'One' :
newClass = new ClassOne(args);
break;
case 'Two' :
newClass = new ClassTwo(args);
break;
}
return newClass;
}
Stattdessen möchte ich irgendwie in der Lage sein, den Konstruktoraufruf zu erstellen. Ist das möglich?
Ich mag diese, weil ich nicht explizit eine Karte von Variablen zu Klassen erstellen muss - nur eine Konstante mit der Gruppe von Klassen zu konstruieren ist genug. @ Thefourtheyes Beispiel ist ordentlich, aber ich denke, das ist näher an dem, was ich tun wollte. – raffjones
Es muss eigentlich keine Klasse sein. Es kann eine einfache Fabrikfunktion sein. Eine Klasse ist irgendwie übertrieben IMHO. – thefourtheye
@thefourtheye Ja, sicherlich nicht der einzige Weg. :-) – sdgluck