web-dev-qa-db-fra.com

Javascript invoque dynamiquement la méthode objet de la chaîne

Puis-je appeler dynamiquement une méthode d'objet dont le nom de méthode est une chaîne? J'imagine ça comme ça:

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

si le nom de la propriété est stocké dans une variable, utilisez []

foo[method]();
187
Karoly Horvath

Les propriétés des objets sont accessibles via la notation tableau:

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

la méthode peut être appelée avec eval eval("foo." + method + "()"); pourrait ne pas être une très bonne solution.

0
hakovala

Lorsque nous appelons une fonction dans un objet, nous devons fournir le nom de la fonction sous forme de chaîne.

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

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