Ich möchte ein Funktion aufrufen, deren Name ich irgendwoher als String bekomme (als Parameter oder aus der Seite geparst), außerdem habe ich dazu gehörige Parameter, deren Anzahl aber variabel ist. Nun möchte ich die Funktion aufrufen. Da mir bisher nichts besseres eingefallen ist, sieht (verkürzt) das Ergebnis erst mal so aus.
fFunction = eval(sFunction);
switch(aParam.length){
case 1:
fFunction(aParam[0]);
break;
case 2:
fFunction(aParam[0], aParam[1]);
break;
case 3:
fFunction(aParam[0], aParam[1], aParam[2]);
break;
case 4:
fFunction(aParam[0], aParam[1], aParam[2], aParam[3]);
break;
case 5:
fFunction(aParam[0], aParam[1], aParam[2], aParam[3], aParam[4]);
break;
default:
fFunction();
break;
}
Das ganze funktioniert, sieht aber einfach graulich aus und auf 5 Parameter beschränkt. Der eval-Aufruf lässt sich vielleicht noch begründen, da meine Funktion einem Objekt zugehörig sein könnte (sonst auch: window[sFunction]) und ich den Wert tatsächlich als String bekomme.
Im Endeffekt möchte ich einen Funktionsaufruf durchreichen, um ihn bspw. völlig parametrisiert an einen Event zu binden. Was da aufgerufen wird, interessiert mich an dieser Stelle nicht.
Ich möchte also meinen Codeschnipsel passieren können mit den Werten:
var sFunction = "alert";
var aParam = new Array("bin der einzige Parameter");
und ein andermal:
var sFunction = "myObject.ObjextFunktion";
var aParam = new Array("a", "b", new Array(1, 2));
Danke schon mal, greh