Das Problem sind ja einerseits, dass du die verschiedenen Parametertypen (strings, zahlen, objekte) unterschiedlich als Parameter zusammenbauen musst und anderseits die Funktionsreferenz nicht mehr nutzen kannst, du brauchst einen String, oder?
Dazu muss ich ausholen, um einen Spezialfall zu beschreiben:
Ich will/muss irgendwie in JavaScript mehrere Fenster/Frames verwalten. Mein Problem, wofür ich das oben genannte gebraucht hätte, wäre eine Notify-Methode für einen Fensterverwalter gewesen.
Meine Idee war, wenn ein fenster irgendwas ändert, inofrmiert er den Fensterverwalter mittels einer notify-Methode.
Fensterverwalter.notify('ereignisname' [parameter])
z.B.: Fensterverwalter.notify ('url_change', 'http://www.foo.bar');
Dieser ruft dann in allen Fenster eine receive_event-Funktion auf
receive_event (ereignisname, parameter) {
if (ereignisname == 'url_change') {
location.href = receive_event.arguments[1];
}
...
}
Den Fensterverwalter hätt ich eben (wenn das in JavaScript gegangen wäre), so programmiert:
function notify {
/* für alle Fenster w*/
w.receive_event(notify-arguments);
}
Stattdessen mache ichs jetzt so, dass der ereignisname selbst eine Funktion ist:
function notify (ereignisname, parameterstring) {
/* für alle fenster */
eval (ereignisname+'('+parameterstring+')');
}
function urlchange (url) {
location.href = url;}
usw. (auf korrekten Syntax hab ich jetzt nicht geachtet :) )
Wie gesagt, für meinen speziellen Fall eigentlich ganz cool, jezzt hab ich fast sowas wie Event-Handler, aber obs als allgemeine Lösung taugt...ich weiss nicht.
Fröhliches Code-Crunchen,
Jörg