Javascript динамически вызывает метод объекта из строки - PullRequest
80 голосов
/ 24 марта 2012

Можно ли динамически вызывать метод объекта с именем метода в виде строки?Я хотел бы представить это так:

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

Ответы [ 4 ]

180 голосов
/ 24 марта 2012

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

foo[method]();
28 голосов
/ 24 марта 2012

Свойства объектов доступны через обозначение массива:

var method = "smile";
foo[method](); // will execute the method "smile"
0 голосов
/ 24 декабря 2018

Когда мы вызываем функцию внутри объекта, нам нужно предоставить имя функции в виде строки.

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

obj['talk'](); //prints "Hi"
obj[talk]()// Does not work
0 голосов
/ 25 марта 2012

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

...