0

多次阅读此问题及其接受的答案后,当我将其名称作为字符串时如何执行 JavaScript 函数

我试着自己做。但我认为我今天不走运的一天是我尝试过的没有奏效。我已经为我的测试创建了一个小提琴

//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/

我想做的是调用我使用字符串声明的函数并获取它的返回值。(fn==='function')因此,我使用该参数遵循了我在 SO 中看到的内容。但它似乎对我不起作用。

我哪里出错了?

注意:我已经在 firebug 中检查了它并且我的函数存在......我是否陷入了范围界定问题?或者其他的东西?

4

3 回答 3

3

正如您提到的相关答案所说,按名称命名的函数由以下方式调用:

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

另见:http: //jsfiddle.net/qKHpu/4/

于 2012-05-24T08:04:55.970 回答
1

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

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

alert(InvokeChecking(CheckMe)); // instead of alert(InvokeChecking("CheckMe"));
于 2012-05-24T08:05:19.010 回答
0

http://jsfiddle.net/qKHpu/27/

检查它工作一些..

于 2012-05-24T08:31:30.983 回答