2016-10-29 7 views
0

Ich habe den Klassennamen in einer String-Variablen. Ich möchte die statische Methode addField für die dynamische Klasse aufrufen.Dynamische Aufruf einer statischen Methode in einer JavaScript/ES7-Klasse

const className = "CustomClient"; // comes from dropdown. 
CustomClient.addField(); 

CustomClient ist der Name der ES7-Klasse. addField ist eine statische Methode. Ich möchte das addField dynamisch aufrufen. Die Klasse kann CustomClient, CustomContract oder CustomUser sein.

+0

haben Sie eine Instanz der Klasse 'CustomClient' erstellen müssen sein? –

+0

Nein, rufen Sie einfach eine statische Methode für die Klasse auf. – vijayst

+0

Verwenden Sie Module? Wenn ja, müssen Sie diese Klasse wahrscheinlich importieren –

Antwort

2

Es ist immer das gleiche, wenn Sie eine Klasse mit Namen verweisen möchten - ob es zu instanziiert, eine statische Methode auf sie oder etwas anderes zu nennen: Sie einen Namen → Klassenzuordnung zu bauen und es nachschlagen:

const classes = { 
    "CustomClient": CustomClient, 
    … 
} 
var classRef = classes[className]; 

In Ihrem Fall wäre es

const classes = {CustomClient, CustomContract, CustomUser}; // shorthand notation 
classes[className].addField(); 
Verwandte Themen