Wie man setTimeout mit Parametern aufruft

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.