メソッド名を文字列として持つオブジェクトメソッドを動的に呼び出すことはできますか?私はこのように想像します:
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();
プロパティの名前が変数に格納されている場合は、[]
を使用します
foo[method]();
オブジェクトのプロパティには、配列表記を使用してアクセスできます。
var method = "smile";
foo[method](); // will execute the method "smile"
メソッドはeval eval("foo." + method + "()");
で呼び出すことができますが、あまり良い方法ではありません。
オブジェクト内で関数を呼び出す場合、関数の名前を文字列として提供する必要があります。
var obj = {talk: function(){ console.log('Hi') }};
obj['talk'](); //prints "Hi"
obj[talk]()// Does not work