Лучший способ состоит в том, чтобы использовать Ajax (можно найти простое учебное руководство на этой странице Tizag ). Причина состоит в том, что любая другая техника, которую можно использовать, требует большего количества кода, она, как гарантируют, не будет работать, перекрестный браузер без переделывает, и требует, чтобы Вы использовали больше клиентской памяти путем открытия скрытых страниц в кадрах передающие URL, анализирующие их данные и закрывающие их. Ajax является способом войти в эту ситуацию. То, что мои два года JavaScript тяжелый разговор разработки.
Мне нравится. Я бы, вероятно, создал простую вспомогательную функцию вроде следующей:
function runFunction(name, arguments)
{
var fn = window[name];
if(typeof fn !== 'function')
return;
fn.apply(window, arguments);
}
//If you have following function
function foo(msg)
{
alert(msg);
}
//You can call it like
runFunction('foo', ['test']); //alerts test.
Лично я бы не стал беспокоиться даже о вспомогательной функции
window[someKey]('test')
.
Однако я бы вообще не стал поддерживать набор возможных функций для вызова в глобальной области видимости в любом случае . Поэтому я бы использовал более общий шаблон: -
obj[someKey]('test')
где obj может быть this
, свойством this или переменной из замыкания.
Вы можете использовать eval (str)
eval('foo();');
, используйте это с особой осторожностью.