调用函数名称作为字符串传递的函数

时间:2014-12-13 07:46:27

标签: javascript

如何为下面的代码段调用警报?

function a(fun) {
    fun.call(null);
}

function x() {
    alert("function called");
}

a("x");

请确保仅允许编辑

function a(fun) {
    fun.call(null);
}

2 个答案:

答案 0 :(得分:0)

这里没有多少选择。首先,在全局窗口上下文中,您可以这样做:

function a(fun) {
    this[fun].call(null); // window[fun].call(null);
}

如果您的功能位于上述不同的上下文中将无效。更灵活的方法是在对象上声明方法:

function a(fun) {
    obj[fun].call(null);
}

var obj = {
    x: function() {
        alert("function called");
    }
};

a("x");

答案 1 :(得分:0)

我想如果你喜欢eval那么你可以这样做

function a(fun) {
    eval(fun + "()");
}

但我还是建议你这样做。它在许多js库中的任何地方用于回调功能。

   function a(fun) {      
    fun();
}

function x() {
    alert("function called");
}

a(x);