Как выполнить функцию JavaScript, когда я отправляю его имя в виде строки динамически с параметрами - PullRequest
2 голосов
/ 01 декабря 2011

Я хочу выполнить функцию javascript, имя которой динамически передается в виде строки.и мне не нужно передавать какие-либо параметры при выполнении функции.

Пожалуйста, кто-нибудь может подсказать мне, как этого добиться?

С уважением, Камеш

Ответы [ 7 ]

1 голос
/ 01 декабря 2011

одним простым способом

eval("SomeFunction()");

или

var funcName = "SomeFunction";
var func == window[funcName];
func();
0 голосов
/ 01 декабря 2011

Возможно, более безопасный способ сделать что-то вроде этого (псевдокод только здесь):

function executer(functionName)
{
  if (functionName === "blammo")
  {
    blammo();
  }
  else if (functionName === "kapow")
  {
    kapow();
  }
  else // unrecognized function name
  {
    // do something.
  }

Для этого вы можете использовать оператор switch (кажется, это лучшая конструкция):

switch (functionName)
{
  case "blammo":
    blammo();
    break;

  case "kapow":
    kapow();
    break;

  default:
    // unrecognized function name.
}

Вы можете оптимизировать это, создав массив имен функций, выполнив поиск в массиве нужного имени функции, а затем выполнив значение в массиве.

0 голосов
/ 01 декабря 2011

Использование eval - худший способ, который только можно себе представить. Избегайте этого любой ценой.

Вы можете использовать window[functionname]() так:

function myfunction() {
    alert('test');
}

var functionname = 'myfunction';
window[functionname]();

Таким образом, вы также можете добавить аргументы

0 голосов
/ 01 декабря 2011

Если функция глобальная, вы должны сделать window[funcName]() в браузере.

0 голосов
/ 01 декабря 2011
function a() { 
   console.log('yeah!'); 
}

var funcName = 'a'; // get function name

this[funcName]();
0 голосов
/ 01 декабря 2011

вы говорите о 'eval ()?'

var foo = "alert('bar')";
eval(foo);

Надеюсь, это поможет;

0 голосов
/ 01 декабря 2011

опасно, но вы можете использовать eval(method_name+"()")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...