setTimeout mit Klassenmethoden aufrufen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • setTimeout mit Klassenmethoden aufrufen?

    Hallo,

    Wie rufe ich eigentlich eine Klassenmethode mit setTimeout auf?

    Sagen wir man hat ne Klasse:

    PHP-Code:
    function EinfachNurNeKlasse () {

         
    this.wiederholeMich = function() {
         
    // tue etwas...
         
    }

         
    this.start = function() {
         
    //...
         
    window.setTimeout("wiederholeMich()",1000);
         
    //...
         
    }
    }

    var 
    test = new EinfachNurNeKlasse();
    test.start(); 
    Wenn ich jetzt start() ausführe will ich das die dazugehörige Methode einfach nur mehrmals abläuft. Ist irgendwie zu hoch für mich, da ich schon allein den Sinn der -> '...' <- nicht verstehe.

    Thx für hilfreiche Antworten.

  • #2
    Code:
    function EinfachNurNeKlasse( strInstanceName )
    {
      this.strInstanceName = strInstanceName;
    
      this.wiederholeMich = function()
      {
        alert('ich wurde wiederholt..');
      }
    
      this.start = function()
      {
        window.setTimeout("window['"+ this.strInstanceName +"'].wiederholeMich()", 1000);
      }
    }
    
    var test = new EinfachNurNeKlasse( 'test' );
    test.start();
    Vorraussetzung hierbei ist, dass du die Instanz des Objektes global, d.h. im Window-Objekt definierst. Es würde nicht gehen, wenn du innerhalb einer Funktion eine Variable mit var definierst und dieser anschließend das Objekt zuordnest.
    Code:
    function DiesWuerdeNichtGehen()
    {
      var test = new EinfachNurNeKlasse( 'test' );
      test.start();
    }
    Wenn du das var weg lässt, dann wird die Variable automatisch im Window-Objekt registriert und somit würde es dann auch wieder gehen, obwohl die Instanz innerhalb einer Funktion erzeugt wurde.
    Zuletzt geändert von reallife; 17.06.2006, 15:32.

    Kommentar


    • #3
      Re: setTimeout mit Klassenmethoden aufrufen?

      window.setTimeout(this.wiederholeMich,1000);
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Thx, für die Antworten! Hatte es auch so versucht gehabt, aber dank eines anderen Fehlers nie zu dem gewünschten Ergebnis gekommen!

        Wobei ich wieder was interessantes dazugelernt habe:
        ... this.strInstanceName ...

        Kommentar

        Lädt...
        X