2012-03-24 18 views
61

Kann ich eine Objektmethode, die den Methodennamen als Zeichenfolge hat, dynamisch aufrufen? Ich würde es so vorstellen:Javascript ruft Objektmethode dynamisch aus String

var FooClass = function() { 
    this.smile = function() {}; 
} 

var method = "smile"; 
var foo = new FooClass(); 

// I want to run smile on the foo instance. 
foo.{mysterious code}(); // being executed as foo.smile(); 

Antwort

143

, wenn der Name der Eigenschaft in einer Variablen gespeichert wird, verwenden []

foo[method](); 
+0

Danke Jungs, das war so einfach, ich habe es total übersehen. War schon auf der Suche nach einigen magischen Funktionen und Tricks. –

+7

Sie sind eine Legende! – Subtletree

+0

Kurz und prägnant! –

24

Eigenschaften von Objekten können durch die Array-Notation zugegriffen werden:

var method = "smile"; 
foo[method](); // will execute the method "smile" 
-2

Methode kann Anruf mit Eval eval("foo." + method + "()"); möglicherweise nicht sehr gut sein.

+0

http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil –

+8

Ich hatte ein nagendes Gefühl, dass etwas mit dem Evil falsch war .. – hakovala

+0

das ist nur eine andere Lösung, warum runter. –

Verwandte Themen