2012-03-24 16 views
61

メソッド名を文字列として持つオブジェクトメソッドを動的に呼び出すことはできますか?プロパティの名前を変数に格納されている場合、Javascriptは動的にオブジェクトメソッドを呼び出す

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(); 

答えて

143

オブジェクトのプロパティは、配列表記を使用してアクセスでき[]

foo[method](); 
+0

ありがとうございました、それはとても簡単に私はそれを見落としました。すでにいくつかの魔法の機能や技を探していました。 –

+7

あなたは伝説です! – Subtletree

+0

短く簡潔に! –

24

を使用します:私はこのようにそれを想像

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

メソッドはevalで呼び出すことができます eval("foo." + method + "()"); 非常に良い方法ではないかもしれません。

+0

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

+8

悪い評価に何か問題があったと感じていました。 – hakovala

+0

これはちょっと別の解決方法、なぜdownvoteですか。 –

関連する問題