使用字符串变量的值调用Javascript函数的方法?

Mar*_*iek 16 javascript function

我已经看到这种技术用于根据字符串变量的值调用Javascript函数.

function foo() {
    alert('foo');
}

var test = 'foo';

window[test]();  //This calls foo()
Run Code Online (Sandbox Code Playgroud)

这是接受的方式吗?还是有更好的方法?是否需要担心任何跨浏览器问题?

Sol*_*ogi 32

看起来很好.我可能会创建一个简单的帮助函数,如下所示:

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.
Run Code Online (Sandbox Code Playgroud)

  • 您多久调用一个在全局范围内声明的函数并为其提供除null之外的上下文?(顺便说一下,我认为你使用"范围"这个词会产生误导,上下文会更好) (2认同)

Ant*_*nes 6

我个人也不会打扰辅助函数

  window[someKey]('test')
Run Code Online (Sandbox Code Playgroud)

没关系.

但是,无论如何,我都不会维持一组可能的函数来调用全局范围.因此我会使用更一般的模式: -

 obj[someKey]('test')
Run Code Online (Sandbox Code Playgroud)

obj可能是this一个闭包的属性.