我有一个要求,我得到了锚标签ID,并根据id我确定哪些函数来执行..所以有什么,五星级下面的代码有没有像返回一个函数?
function treeItemClickHandler(id)
{
a=findDisplay(id);
a();
}
我有一个要求,我得到了锚标签ID,并根据id我确定哪些函数来执行..所以有什么,五星级下面的代码有没有像返回一个函数?
function treeItemClickHandler(id)
{
a=findDisplay(id);
a();
}
当然,功能第一类对象在JavaScript。例如,您可以创建一个图表(对象)持有的函数的引用您要拨打:
var funcs = {
'id1': function(){...},
'id2': function(){...},
...
};
function treeItemClickHandler(id) {
if(id in funcs) {
funcs[id]();
}
}
随着功能的任何其他值处理,您还可以从另一个函数返回他们:
function findDisplay(id) {
// whatever logic here
var func = function() {};
return func;
}
您可以将功能类似一个变量因此: 您也可以从函数返回函数指针 - 请参阅findDisplay(id)的return语句。
function treeItemClickHandler(id)
{
var a= findDisplay;
var other = a(id);
other();
}
function findDisplay(id)
{
return someOtherThing;
}
function someOtherThing()
{
}
函数是正常的javascript值,所以你可以传递它们,(重新)将它们分配给变量,并将它们用作参数值或函数返回值。只要使用它们;)你的代码到目前为止是正确的。
感谢您的解释 – abi1964 2011-06-16 11:59:31
您可以通过多种方式在ID和函数之间进行映射。
其中一个比较简单的方法是创建一个对象映射id到函数,并找到从该对象调用的函数(这实际上是一个更好看的switch
语句)。
例子:
function treeItemClickHandler(id)
{
var idMap = {
"some-id": findDisplay,
"another-id": doSomethingElse
};
if (!idMap.hasOwnProperty(id)) {
alert("Unknown id -- how to handle it?");
return;
}
// Call the corresponding function, passing the id
// This is necessary if multiple ids get handled by the same func
(idMap[id])(id);
}
function findDisplay(id)
{
// ...
}
function doSomethingElse(id)
{
// ...
}
你为什么不干脆通过使用'之开关或一些'如果else'语句检查ID,并执行基于该功能? – Kokos 2011-06-16 11:42:50