Hallo,
function MeineKlasse() {
this.doStuff = function() {
alert(1);
};
window.setTimeout(this.doStuff, 5000);
}var bla = new MeineKlasse();
Wobei ein Konstruktor eher keine solchen Seiteneffekte haben sollte.
Der Punkt ist m.E. vielmehr: Warum dann noch ein eigenes Objekt verwenden? Das Übergeben der Funktion an setTimeout reißt sie vollkommen aus ihrem Objektkontext. Der Zugriff auf Eigenschaften und Methoden der Instanz ist dann nicht mehr möglich. this verweist auf window, nicht auf die Instanz, diese ist nur über ihren Namen ansprechbar. Das verlangt eine umständliche Lösung, daher ist Jörgs Version letztlich vorteilhafter, denn sie belässt die Methode in ihrem Kontext und führt sie regulär aus.
Ebenso umständlich wäre das Übergeben der Instanz an die aus dem Kontext gerissene Funktion:
function Prototyp () {
this.eigenschaft = "hallo";
this.methode1 = function () { alert(this.eigenschaft); };
this.methode2 = function (objekt) { alert(objekt.eigenschaft + " " + objekt.methode1); };
window.setTimeout(this.methode2, 1000, this);
}
var instanz = new Prototyp();
Erlaubt ebenfalls nur Zugriff auf öffentliche Eigenschaften und Methoden, wird aber nur von wenigen Browsern unterstützt.
Mathias