Hallo,
ich bin dabei, immerhin schon 0,1%, zu verstehen. Anbei das was ich schon habe.
in meiner lib
function Pblink()
{
this.blinkbit=0;
this.functionlist = new Array();
this.func = function()
{
if (this.blinkbit==0)
{this.blinkbit=1;}
else
{this.blinkbit=0;}for (var i=0; i < this.functionlist.length; i++) { eval(this.functionlist[i]); }
}
}
Das ist doch soweit bis auf das eval schonmal ganz gut!
In deiner functionlist stehen ja dann momentan Strings wie "funktion(x,y)". Das ist natürlich schlecht.
In der "functionlist" (eigentlich ist der Name etwas unpassend) solltest du Referenzen auf Objekte speichern.
Nehmen wir mal an, du hast ein Objekt Auto
[code lang=javascript]
function Auto()
{
this.blinkaktion = function()
{
this.hupen();
}
this.hupen = function()
{
alert("tuuuut!");
}
}
Dieses \_muss\_ die Methode blinkaktion implementieren.
Wenn du nun möchtest, dass das Auto alle 500ms durch den Blinker zum Hupen gebracht wird (oder was auch immer du willst), musst du nur dafür sorgen, dass der Blinker vom Auto die Methode blinkaktion aufruft.
Dafür muss natürlich der Blinker das Auto in seiner Liste (bei dir functionlist genannt) speichern.
Also musst du das Auto in diese Liste speichern (oder das Auto muss sich selsbt darin speichern).
Am besten brauchst du also im Blinker eine Methode speichereObjekt(objekt), welches das Objekt (also z.B. ein Auto) in die Liste einträgt.
Dann sieht der Code so aus: meinPlink.speichereObjekt(meinAuto);
Ab meinPlink (was eine Instanz von deiner Plink Klasse ist) speichert also das Auto in der Liste. Ab diesem Zeitpunkt wird alle 500ms von jedem Objekt in der Liste nicht das "eval" durchgeführt wie du es jetzt hast, sondern es wird von jedem Objekt die Funktion blinkaktion() aufgerufen. Das bedeutet natürlich, dass jedes Objekt in dieser Liste auch so eine Methode haben muss, sonst gibts ne Fehlermeldung.
Der Vorteil ist jetzt, dass du z.B. auch bei deiner Hund-Klasse (oder was auch immer) eine Methode "blinkaktion()" implementieren kannst und dann ganz viele Hunde in der Liste speichern kannst.
Und natürlich solltest du auch eine Methode zum Löschen aus der Liste schreiben.
Dadurch brauchst du kein eval mehr, denn eval ist evil.