2016-10-24 21 views
1

Ich habe eher eine scheinbar triviale Frage, aber bin nicht in der Lage, einen effizienten Ansatz zu finden.Dynamisch Funktion in Javascript aufrufen

ich eine Liste von etwa 50 Funktionen genannt werden wie zum Beispiel:

globalClient.funcA(...) 
globalClient.funcB(...) 
globalClient.funcC(...) 

Mein Code sollte idealerweise dynamisch den Namen der Funktion (funcA/funcB/funcC erstellen und dann gehen, um tatsächlich diese Funktion aufrufen . Mein Ansatz funktioniert unten nicht (bitte beachten sie, dass diese die tatsächlichen Namen der Funktionen nicht genau sind ich diese willkürlichen Namen der Einfachheit des Verständnisses nur geben.):

var functionName = 'func'.concat('A'); 
globalClient.functionName 

Die zweite Zeile ist, wo es Fehler out. Jetzt JS denkt, dass functionName selbst ist der Name der Funktion. Ich möchte, dass es functionName zu funcA auflöst und dann globalClient.funcA (...) aufruft.

Ich habe darüber nachgedacht, einen Schalter/Fall dafür zu implementieren, aber ich bin sicher, dass es eine viel einfachere appraoch ist. Irgendwelche Ideen?

+1

Verwenden Klammer-Notation 'globalClient [ "Func" + "B"]()' – Satpal

+2

Dies ist ein dup von vielen, vielen anderen Antworten. – jfriend00

+1

werfen Sie einen Blick auf diese http://stackoverflow.com/questions/359788/how-to-execute-a-jacascript-function-when-i-have-its-name-as-a-string. Ich hoffe, das ist, was Sie suchen – gkb

Antwort

4

Sie können die Klammernnotation als property accessor verwenden.

globalClient[functionName]() 
+1

Brilliant. Danke dafür. – blueren

1

können Sie die [ ] Operator verwenden, um die Eigenschaften für den Zugriff.

var globalClient = { 
 
    funcA: function(){ 
 
    console.log('funcA is called'); 
 
    } 
 
} 
 

 
var functionName = 'func'.concat('A'); 
 
globalClient[functionName]();

Verwandte Themen