Hallo alle JS Experten ;-)
Eigentlich ist das keine Frage, sondern ich brauch ein bisschen Input ob und wie ich das neu gelernte am besten umsetze.
Zum Problem:
Fast jeder kennt das Problem man bastelt sich ein schönes Objekt und dann möchte man mit diesem einen timer benutzen. Das geht aber nicht, da die funktion setTimeout einen string als ersten Parameter erwartet und ein Objekt als String darzustellen ist nicht möglich.
Nun hab ich (ich glaube es war der JS Newsgroup) einen schönen Trick/workaround gelesen, der auch sogar im IE 4 funktionert.
Das sieht so aus:
<script type="text/javascript">
function myObj(name)
{
this.name = name;
this.wert = 0;
}
myObj.prototype.timer = function()
{
if( this.wert && !confirm('Der Zähler ist bei: ' + this.wert + '\n\nWeiter?') ) return;
this.wert++;
window.setTimeout(this.name + '.timer()', 500);
}
var o = new myObj('o');
o.timer();
</script>
http://home.arcor.de/struebig/computer/javascript/test/test timeout.html
Geht das eleganter?
(ich weiss dass man in neuren Browsern auch ein anonyme Funktion definieren kann, das läuft aber nicht in meinem IE 4)
Es ist ja manchmal nicht so einfach den Variabelnname als String zu übergeben (bei einem Array z.b.), kann man den zur Laufzeit irgendwie rausfinden?
Gibt es vielleicht in den Tiefen von .prototype .constructor usw. noch andere Möglichkeiten?
Und wo geht das nicht?
Struppi.