Wer in Javascript programmiert, kennt das Problem vielleicht:
Man möchte „window.setTimeout( function, timems )“ benutzen, um eine eigene Routine aufzurufen, aber man müßte da mal einen Parameter mitgeben, weil das ganze nicht statisch programmiert ist.
Das geht so :
function Klasse () {
...
this.timerCheck = function(self) {
console.debug("timerCheck: "+ Date.now() +" "+ self.timer );
if ( ( Date.now() - self.timer ) / 1000 > 20 ) {
self.close();
return true;;
}
window.setTimeout( self.timerCheck.bind(null, self), 1000);
return false;
}
this.andereFunktion = function() {
...
this.timerCheck(this);
...
}
}Der entscheidende Teil ist das self.timerCheck.bind(null, parameter) . Es ruft die Funktion so auf timerCheck(parameter), statt blanko, wie es jahrelang nötig war.
Damit kann man endlich in Objekten, die Instanziiert werden, mehrere Instanzen einer Timerroutine laufen lassen.