susi: setInterval() wie referenzieren?

hallo,

ich ahbe mir gerade eines meiner ersten objecte in JS gebaut und hab folgendes problem!
wie referenziere ich auf mein object wenn setinterval in einer methode des objects ist?

[CODE]
...
this.start= function()
{
this.trigger = setInterval("Engine.runThroughTasks()", this._timer);
}
Engine= new NEngine();
Engine.start();
...
[/CODE]

so funtk es auch ...
aber will ich natürlich um es OOP zu halten mehrere Instanzen laufen haben und kann nicht immer nur auf eine referenzieren!
also versuchte ich ...

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);

ging auch nicht!

wie löse ich dieses problem ... hab echt keine ahnung mehr!

THX susi

  1. Hallo susi,

    vieleicht hilft http://aktuell.de.selfhtml.org/artikel/javascript/organisation/

    Gruß, Jürgen

  2. 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

    --
    »No nations, no borders.«
    Visitenkarte · SELFHTML Weblog
    1. danke sehr!

      das hilft mir alles sehr viel weiter , jedoch bin ich noch immer nicht zu einem endresultat gekommen, aber ich komm voran!

      danke