动态生成方法名称会导致Uncaught TypeError

时间:2014-05-20 22:22:08

标签: javascript ruby-on-rails-4

尽管这是几个堆栈溢出答案中已批准的方法,以及我到目前为止阅读的两个教程,但我无法通过动态生成名称来调用javascript中的方法而不会出现控制台错误:

Uncaught TypeError: undefined is not a function

如何动态调用方法?

我当前的代码,在我的Rails应用程序和jsfiddle中都失败了(你可以看到小提琴here

var foo = "hello_";
var bar = "world";
var function_name = "say_" + foo + bar;

window[function_name](" World!");

function say_hello_world(the_word)
{
    alert("Hello " + the_word);
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

在解析了评论中的建议并阅读了他们引导我的文章后,看起来JSFiddle和Rails都将该函数声明为onload的本地函数。明确地将该函数声明为全局意味着现在可以在我的原始Fiddle和我的Rails应用程序上运行。

var foo = "hello_";
var bar = "world";
var function_name = "say_" + foo + bar;

window.say_hello_world = function(word)
{
    alert("Hello " + word + "!");
}

window[function_name]("world");

感谢大家的帮助。