あなたは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();
お知らせ私は追加している2番目のメニュー項目があり無名関数は、パラメータとして渡された時点で、addMenuItem()
に定義されています。
(もちろんこれは単純化しすぎ例ですが、私はあなたがそれはあなたの本当の要件のために働くだろうか見ることができると思います。)