好的,希望这是正确的。我正在构建一个通用的javascript函数,它将构建一个菜单,然后构建每个菜单项将调用的函数。为此,我需要传递一个要为每个选项调用的命令列表。
例如:
var thecall = 'alert("hi, this works");';
function myfunction(thecall)
{
//In here I want to excute whatever commands is listed in variable thecall
.....
}
我确信这样做是完全愚蠢的,但我不知道怎么做。
基本上,我需要我的函数在变量的基础上执行其他函数。
谢谢!
答案 0 :(得分:6)
我告诉你如何使用它,我觉得有点发展。
var thecall = function(name){alert("hi " + name + ", this works");};
function myFunction(function_ref)
{
function_ref('Mark');
}
myFunction(thecall);
答案 1 :(得分:1)
您可以使用eval()
执行任意JavaScript链接,但这不是您的最佳解决方案(它几乎不是最佳解决方案)。
JavaScript中的函数本身就是对象,这意味着您可以在多个变量中存储对同一函数的多个引用,或者将函数引用作为参数传递等。所以:
var thecall = function() {
alert("hi, this works");
};
function myfunction(someFunc) {
someFunc(); // call the function that was passed
}
myfunction(thecall); // pass reference to thecall
请注意,在将引用传递给thecall
函数时,没有括号,即您说thecall
而不是thecall()
:如果您说myfunction(thecall())
会立即调用thecall
并将其返回的内容传递给myfunction
。如果没有括号,则会传递对thecall
的引用,然后可以在myfunction
内执行该引用。
在您谈论菜单项列表的情况下,每个项目应调用特定功能,您可以执行以下操作:
var menuItems = [];
function addMenuItem(menuText, menuFunction) {
menuItems.push({ "menuText" : menuText, "menuFunction" : menuFunction });
}
function test1() {
// do something
}
addMenuItem("Test 1", test1);
addMenuItem("Test 2", function() { alert("Menu 2"); });
// and to actually call the function associated with a menu item:
menuItems[1].menuFunction();
请注意,我正在添加的第二个菜单项在将其作为参数传递给addMenuItem()
的位置定义了匿名函数。
(显然这是一个过于简单的例子,但我希望你能看到它对你真正的要求有用。)
答案 2 :(得分:0)
我认为您正在寻找eval功能。
var code= 'alert("hi, this works");';
eval(code);