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

  显示原文与译文双语对照的内容
0 0

如何为 below 代码段发出警报?

function a(fun) {
 fun.call(null);
}
function x() {
 alert("function called");
}
a("x");

请确保只允许对编辑进行编辑

function a(fun) {
 fun.call(null);
}
时间:原作者:4个回答

0 0

这里没有很多选项首先,在全局窗口上下文中,你可以这样做:

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

如果你的函数在不同的上下文中 above 将无法工作。 更多的flixible方法是在对象上声明方法:

function a(fun) {
 obj[fun].call(null);
}
var obj = {
 x: function() {
 alert("function called");
 }
};
a("x");
原作者:
0 0

我想如果你喜欢评估的话你就可以

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

但我还是建议你应该这样做。 它在许多js库的回调功能中被使用。

 function a(fun) { 
 fun();
}
function x() {
 alert("function called");
}
a(x);
原作者:
...