Hi Calocybe,
von Dir kann man echt was lernen; gut, daß Du Dich so stark an diesem Thema beteiligst.
var globals = [ ]; /* <==> var globals = new Array(); */
dann kann man dynamisch mit
var tmp;
globals["menu_1"] = [ ];
tmp = globals["menu_1"]["mouseoverimg"] = new Image();
tmp.src = "/images/...gif";
usw. sehr schoen seine dynamischen Daten aufbauen. Dann kann man z.B. einen kompletten "Unterzweig" an eine Funktion uebergeben:
funktion(globals["menu_1"]);
die dann mit arg["mouseoverimg"].src in immer gleicher Weise darauf zugreifen kann. Alles sehr fein, und ganz ohne eval(). ;-)
Also, das ist wirklich interessant. Klaro, Arrays, die noch keine festgelegte Länge haben...und dann auf die Eintrage mit Strings zugreifen. Nicht schlecht.
Genaugenommen werden globale Variablen und Funktionen uebrigens einfach als Eigenschaften des window-Objekts abgelegt. [..]
Nur werden hier die neuen Variablen eben mit den Eigenschaften und Methoden von window durcheinandergewuerfelt, wobei man durchaus auch mal eine aus Versehen ueberschreiben kann, wenn man nicht aufpasst.
Vielleicht kann man das, auch wenn trotzdem bei der Deklaration ausnutzen und Abfragen ob's Probleme gibt mit if(window.variable) oder so. (Hmm...was wenn variable == 0?)
Also diese letzte Ideee ist tatsächlich irgentwie elegant genug, daß ich sie mal ausprobiere. Wenn das Script übersichtlier wird...dann nehme ich sie vielleicht.
Es gibt übrigens noch andere Scripte, wo ich diese Methode brauchen könnte, oder eben auch die obere, die Du besser findest.
Da ich inzwischen eher geneigt bin alle Daten ein und desselben Objektes in einem Object zu kapseln (Größe, Position, Zustand), könnte ein geschickt formuliertes Object-Array, ähnlich dem globals-Array, in solchen Fällen im Script echt schick wirken:
fliegenArray = new Array(); fliegenArray["Fliege_1"] = new fliegenObject(... );
und später in einer Funktion:
function bewege(fliegenName)
{
with(fliegenArray[fliegenName])
{
...
}
}
Hmm...das sieht schon gut aus...
Referenzieren über einen String erschien mir bisher immer albern...aber so fallen bei mir 'ne Menge evals weg, und der Code wird lesbarer. (Obwohl er gar nicht so unlesbar ist...)
Still working...
Simy
PS: Das Fliegenmotiv kommt nicht von ungefähr...ich finde meine 10-20 Fliegen, die ganz unverhofft auf der Seite auftauchen, sehen schon echt klasse aus...