我有一個要求,我得到了錨標籤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