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

Ответ 1

если имя свойства хранится в переменной, используйте []

foo[method]();

Ответ 2

Доступ к свойствам объектов можно получить через нотацию массива:

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

Ответ 3

метод может быть вызван с eval   eval("foo." + method + "()"); может быть не очень хорошим способом.