[JS] OOP - Rekursiver aufruf mit "setTimeout"?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
ansprechen
argument
array
aufrufen
code
funktion
funktionieren
idee
instanz
klasse code
methode
objekt
parameter
problem
referenz
reihenfolge
rekursiv aufrufen
spieler
string
versucht code
-
Hallo liebe Community,
ich bräuchte eine Möglichkeit, damit sich die Methode eines Objekts rekursiv aufrufen kann.
Bisher habe ich es so versucht:
setTimeout("this.move('down', 0)", 5);
oder (player ist die Klasse):
setTimeout("player.move('down', 0)", 5);
funktionieren tut es so (player1 ist das Objekt):
setTimeout("player1.move('down', 0)", 5);
allerdings will ich es relativ Adressieren und nicht absolut, da ich nicht nur 1 Spieler / Objekt habe. Hat wer eine Idee wie ich das machen kann? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Gibt 2 Möglichkeiten:
var movement = "down", fields = 1; setTimeout(player.move, 5, movement, fields);
Damit werden die Argumente nach der Zeit als Argumente in der Reihenfolge übergeben.
Normalerweise löst man dies aber über eine Closure:
var movement = "down", fields = 1; setTimeout(function(){ player.move(movement, fields); }, 5);
Ich hoffe das Problem hatte ich richtig verstanden, sonst frag einfach nochmal nach.
Liebe Grüße -
Ich glaube nicht, dass das mein Problem löst da ich damit ja immernoch nicht das Objekt anspreche oder?
-
Du würdest das Objekt "player" ansprechen. Sonst formuliere mal genau, was du möchtest.
Was ich nu dachte: Du möchtest vom Objekt player die Methode move aufrufen, mit den 2 Argumenten, dynamisch. Dafür übergibst du keinen String als ersten Parameter an das setTimeout, sondern die Referenz der Funktion, welche gecalled werden soll. In Javascript ist nahebei alles (aber nur nahe bei) mittels Referenzen gelöst. Daher kannst du die Referenz der Funktion übergeben samt Parameter.
Oder möchtest du von JEDEM Player die Funktion aufrufen? Dann musst du alle Instanzen in einem Objekt oder einem Array zusammenfassen:
var playerArr = []; playerArr.push(new Player(1)); playerArr.push(new Player(2)); playerArr.push(new Player(3)); for (var x in playerArr) { setTimeout(playerArr[x].move, 0, direction, fields); }
Alternativ erklär mal bitte ein bisschen genauer, was das Problem ist, und was das Ziel ist. Vielleicht bin ich auch einfach zu blöd, um das Problem wirklich zu erkennen.
Liebe Grüße -
Referezen das war das Stichwort danke :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage