【问题标题】:Invoking a Function by String in JavaScript在 JavaScript 中通过字符串调用函数
【发布时间】:2012-05-24 08:01:08
【问题描述】:

多次阅读此问题及其接受的答案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/

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

我哪里出错了?

注意:我已经在 firebug 中检查了它并且我的函数存在......我是否陷入了范围界定问题?还是什么?

【问题讨论】:

  • 请将您问题的所有相关部分包含在您的问题中。
  • 我想我已经把需要的部分放在了理解我的问题上......而且已经有了一个小提琴......
  • jsfiddle.net/qKHpu/7 typeof fn 实际上是string,而不是function
  • @Mahan 指向外部资源的链接不算作“包括”。
  • 哈哈哈谢谢!!!! @NiftyDude

标签: javascript oop function


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    需要传入函数的文字名称,不带引号("),否则会被当作文字字符串,没有意义

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

    【讨论】:

    • 对不起...所以挡住了土豆... 7 分钟后我不会忘记接受这个
    • 奇怪,不知道谁对这个答案投了反对票……这也是正确的 =/
    • 有人对我投了反对票:S,16 秒后,我又收到了反对票 :(,好吧 :(
    【解决方案3】:

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

    检查它是否有效..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多