Variablenfunktionen in JavaScript

K

koli.bri

Hallo ihr fleißigen Scriptersleut'

Ich hab vor kurzem die Variablenfunktionen von PHP kennengelernt.
Geniale Sache, wie ich finde.

Doch gibt es etwas vergleichbares auch für JavaScript? In SelfHTML und vie Google hab ich nichts gefunden...

Hintergrund der Geschichte:
In meinem derzeitigem Projekt tauchen eine Menge http-Requests auf.
der Requestfunktion in JavaScript wird dabei immer noch der Name der Funktion mitgegeben,

PHP:
function macheRequest(url,handle_funktion){
/*
 *  Requestkram
 */
 switch(handle_funktion){
  case "ladebildnach":
    handle_ladebildnach(http_request.responseText);
  break;
  case "speicherindb":
    handle_speicherindb(http_request.responseText);
  break;
/*
 *
 */

 }
}

funktion handle_ladebildnach(vari){
// Anzeigen des Bilds
}

function handle_speicherindb(vari){
// Rückmeldung geben
}

Ideal wäre ja sowas wie
PHP:
function macheRequest(url,handle_funktion){
/*
 *  Requestkram
 */

  handle_funktion(http_request.ResponseText);

/*
 *
 */

 }
}

Also, gibt es außer einer EVAL()-Lösung etwas?

gruß
Lukas
 
Zuletzt bearbeitet von einem Moderator:
Ja, gibt es. "Impliziter Funktionsaufruf" und "Assoziative Arrays mit Objekten" sind die Stichworte:
Extending JavaScript with Function Pointers
Simulierte assoziative Arrays in JavaScript

PHP:
<html>
<head>
<script type="text/javascript">
function sag_hallo () 
{ 
	document.forms['form0'].elements['label'].value="Hallo"; 	
}

function sag_ciao () 
{ 
	document.forms['form0'].elements['label'].value="Ciao"; 
}

var func_array = new Array();
func_array ['Hallo']=sag_hallo;
func_array ['Ciao']=sag_ciao;

function choose_function_by_string ( function_name_as_a_string )
{
	var func_pointer = func_array[function_name_as_a_string];
	if ( undefined != func_pointer )
		func_pointer();	
	else
		alert ("Funktion \""
			+ function_name_as_a_string 
			+"\" gibt es nicht!");
}
</script>
</head>

<body>

<a href="javascript:choose_function_by_string('Hallo')">Rufe &quot;sag_hallo()&quot; auf</a>
<br>
<a href="javascript:choose_function_by_string('Ciao')">Rufe &quot;sag_ciao() &quot; auf</a>
<br>
<a href="javascript:choose_function_by_string('Quark')">Rufe &quot;quark()&quot; auf</a>
<br>&nbsp;
<form name="form0">
<input type="text" name="label" length="80">
</form>
</body>
</html>

p.s.: Die JavaScript-EventHandler funktionieren alle so.
 
Zuletzt bearbeitet:
Wenn auch was spät:
Vielen lieben Dank dafür! :D
Funktioniert Tadellos und einfach isses auch, wenn man es verstanden hat!

gruß
Lukas
 
Zurück
Oben Unten