在JavaScript中按字符串调用函数

时间:2012-05-24 08:01:09

标签: javascript oop function

多次阅读此问题及其接受的答案How to execute a JavaScript function when I have its name as a string

我试着靠自己做。但我认为今天我不幸的一天,我曾经尝试过的是没有用的。我已经为我的测试创建了一个小提琴

//the function I want to invoke by String
function CheckMe() {
    return "haha";
}

//the function that will search for the function and invoke it
function InvokeChecking(func2check) {
    var fn = func2check;
    if (typeof fn === 'function') {
        return = fn(); //invoke the function
    }
}

//the event listener  ( ´ ▽ ` )ノ
$("#checker").click(function () {
    alert("event is working");
    alert(InvokeChecking("CheckMe"));
});​

http://jsfiddle.net/laupkram/qKHpu/2/

我想要做的是通过使用string调用我声明的函数并获取其返回值。所以我使用(fn==='function')参数跟踪了我在SO中看到的内容。但似乎对我不起作用。

我哪里出错?

注意:我已经在firebug中检查了它并且我的功能存在...我是否遇到了范围问题?还是什么?

3 个答案:

答案 0 :(得分:3)

按照您提到的相关答案,按姓名调用的函数由以下人员调用:

var function_name = 'alert';
window[function_name]('hello world');

另请参阅:http://jsfiddle.net/qKHpu/4/

答案 1 :(得分:1)

http://jsfiddle.net/qKHpu/8/

你需要传入函数的文字名称,不带引号("),否则它将被视为文字字符串,这是没有意义的

alert(InvokeChecking(CheckMe)); // instead of alert(InvokeChecking("CheckMe"));

答案 2 :(得分:0)