Geht eigentlich ganz einfach:
Nö, eben nicht.
<script type="text/javascript">
function myObj(name)
{
this.name = name;
this.wert = 0;
}window.setTimeout(myObj(),1000);
Das wäre ja nicht myObj
Sondern du musst erst eins anlegen:
var o = new myObj();
und jetzt?
wie gesagt ich möchte innerhalb des Objetes zur Laufzeit einen Timer setzten. Das ist zum Beispiel nötig, wenn du einen Layer langsam über den Bildschirm bewegen möchtest und diesen als Objekt definierst.
Dazu musst du die Bewegen Funktion immer wieder aufrufen, das würde bei dir so aussehen:
function myObj(name)
{
this.name = name;
this.wert = 0;
}
myObj.prototype.move = function()
{
if(this.wert < ende) window.setTimeout(this.move(),1000);
}
var o = new myObj();
var ende = 100;
o.move();
klapt aber nicht.
</script>
Wie nachzulesen, erwartet settimeout auch einen Zeiger auf ne Funktion.
Also einfach den Funktionsnamen als Argument übergeben.
Wo hast du das gelesen?
http://www.mozilla.org/docs/dom/domref/dom_window_ref115.html#1021427
schreibt:
ID = window.setTimeout("funcName", delay)
Parameters
funcName is the name of the function for which you want to set a delay.
vCode Required. Variant that specifies the function pointer or string that indicates the code to be executed when the specified interval has elapsed.
OK hier:
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/settimeout.asp
Das heißt es funktionert zumindest in allen IE Browsern mit einer anonymen Funktion. Aber nicht so wie du es schreibst.
sondern so:
function myObj(name)
{
this.name = name;
this.wert = 0;
}
myObj.prototype.move = function()
{
window.status = 'wert:' + this.wert;
var s = this;
if(++this.wert < ende)
window.setTimeout(function(){s.move()},1000);
}
var o = new myObj();
var ende = 100;
o.move();
Ich werd das mal in allen Browsern ausprobieren, ist zumindest flexibler als die mit dem String.
Struppi.