gruss Jörg, hallo Struppi,
Struppi schrieb:
Ich bin grad am rumbasteln, ich krieg's selbst nicht hin. Ich
hatte das Problem vor kurzen auch mal (ich wollte ein printf
basteln) und hab es nicht lösen können.
Jörg antwortete:
Ich habs jetzt auch über einen eval-Aufruf gelöst - hat sogar
in meinem Spezialfall ein paar Vorteile (it's not a bug, it's
a feature :) )
nicht wirklich :-( , denn, wie schon Struppi sibyllinisch meinte ...
es gibt keine Lösung, wobei aber selbst für mich JS manchmal
erstaunliche Dinge noch verborgen hält.
... halten "Function"-objekte zur loesung dieser aufgaben die methoden
"call" bzw. "apply" bereit;
diese beiden methoden kann ich jetzt auf die schnelle nicht mit
einfachen worten beschreiben, aber GOOGLE ...
http://www.google.de/search?as_q=JavaScript+referenz+Function+call+apply&num=20&hl=de&ie=UTF-8&newwindow=1&btnG=Google-Suche&as_epq=&as_oq=&as_eq=&lr=lang_de&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
... fuehrt noch viel schneller zu Georg Maass, der es auf den punkt bringt:
http://gml-modul.sourceforge.net/cgi-bin/gmL?Sprache=en&domain=dhtml-tutorial&webpage=152
wir benoetigen also "apply", was dann am bsp. wie folgt aussieht:
function func_a() {
var i, argStr = "";
for (i=0; i<arguments.length; i++) {
argStr += "," + arguments[i];
}
argStr = argStr.substring(1);
alert("func_a:\n\narguments = " + argStr);
if (typeof func_b == "function") {
alert("func_b.apply(null,arguments)");
func_b.apply(null,arguments);
}
}
function func_b() {
var i, argStr = "";
for (i=0; i<arguments.length; i++) {
argStr += "," + arguments[i];
}
argStr = argStr.substring(1);
alert("func_b:\n\narguments.callee.caller = " + arguments.callee.caller + "\n\narguments = " + argStr);
}
func_b("func_b","direkt","aufgerufen");
func_a("argumente","ueber","func_a","an","func_b","gereicht");
by(t)e by(t)e - peterS. - pseliger@gmx.net
br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)