web-dev-qa-db-ja.com

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();
81
Mikulas Dite

プロパティの名前が変数に格納されている場合は、[]を使用します

foo[method]();
187
Karoly Horvath

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

var method = "smile";
foo[method](); // will execute the method "smile"
28
Didier Ghys

メソッドはeval eval("foo." + method + "()");で呼び出すことができますが、あまり良い方法ではありません。

0
hakovala

オブジェクト内で関数を呼び出す場合、関数の名前を文字列として提供する必要があります。

var obj = {talk: function(){ console.log('Hi') }};

obj['talk'](); //prints "Hi"
obj[talk]()// Does not work
0
s.n