Hallo,
this.trigger = setInterval("this.runThroughTasks()", this._timer);
geht nicht, da ja setInterval im window object liegt!
also versuchte ich
this.trigger = setInterval(function(){this.runThroughTasks()}, this._timer);
Alternativ zu den im Artikeln beschriebenen Methoden kann man sich dieser Methode aus Prototype bedienen:
Function.prototype.bind = function () {
var method = this, args = arguments, object = args.shift();
return function () {
return method.apply(object, args);
};
};
Das fügt mittels prototypischer Erweiterung allen Function-Objekten eine Methode bind() hinzu. Darin wird eine Closure-Funktion erzeugt und zurückgegeben- Die ursprüngliche Methode wird darin mittels apply() im Kontext des übergebenen Objektes ausgeführt. Die Funktionsargumente werden weitergereicht.
Benutzung dann etwa so:
this.trigger = window.setInterval(this.runTroughTasks.bind(this), this._timer);
this.runTroughTasks.bind(this) gibt also eine Wrapper-Funktion zurück, die runThroughTasks im Kontext von this ausführt.
(Ein bloßes
this.trigger = window.setInterval(this.runTroughTasks, this._timer);
würde runThroughTasks nicht im Kontext der Instanz ausführen.)
Mathias