Как мне динамически вызывать метод объекта JavaScript - PullRequest
6 голосов
/ 25 февраля 2011

Я думаю, что мне здесь не хватает чего-то очень простого.Я хочу передать функцию объект и метод для вызова.Причины, почему слишком длинные для этого поста.: -)

var myObj = new someObject();
var funcName = "hide";

function callObject(myObj,funcName){
    obj.hide(); //this works     
    obj[funcName]; //doesn't work
    obj.eval(funcName); //doesn't work either.. tried many variations
}

Спасибо!

Ответы [ 2 ]

15 голосов
/ 25 февраля 2011

Вам нужна скобка при вызове, например:

obj[funcName]();

Вы можете заставить eval работать так:

eval("obj." + funcName + "()");

, но есть много причин не делать этого( безопасность, производительность, более сложная отладка ).

1 голос
/ 27 августа 2012

При работе с obj[funcName](); вы должны заботиться о экземпляре объекта.Если вы хотите использовать частную структуру объекта внутри вызова функции, он будет использовать его как статическое свойство.

...