Servus,
die Meisten von euch werden sicherlich schon einmal von der "object literal" Schreibweise für JavaScript gehört haben, es ist eine neue Schreibweise, die helfen soll JavaScript Code portabler und einfach strukturierter zu gestalten.
Bisher waren fremde Scripte - vorallem durch den momentanen AJAX-Hype - immer mit Vorsicht zu genießen, da gleich benannte Variablen oder Funktionen zu Fehlern führten. Eine Möglichkeit wäre nun, diesen Funktionen und Variablen tolle kreative Namen zu geben - das ist aber keine Lösung sondern nur eine Vermeidung des Problems. Außerdem ist es ja perfekt sinnvoll wenn eine Funktion für die Initialisierung "init" heisst, eine Wertprüfung "check", "validate" etc.
Der "object literal" Weg geht in eine andere Richtung. Zusammengehörige Elemente werden unter einem Namen gruppiert - eine Art "namespace" oder Gültigkeitsbereich" - und sind in Verbindung mit diesem eindeutig.
Ok genug des Vorspiels, es folgt ein Beispiel mit hoffentlich verdeutlichenden Bezeichnern und Kommentaren:
// Eine Gruppe zusammengehoeriger Funktionen
namespace={
variable:'Startwert',
eineFunktion:function() {
// Zugriff auf die bereits definierte Variable
namespace.variable = 'neuer Wert';
// Aufruf einer Funktion im gleichen Gueltigkeitsbereich
namespace.eineZweiteFunktion('ein Parameterwert';
// oder in einem anderen Bereich
andererNamespace.eineFunktion();
// oder auch eine ganz normale globale Funktion
normaleFunktion();
return true;
},
eineZweiteFunktion:function(parameter) {
// Definition einer neuen Variablen
namespace.eineWeitereVariable = parameter;
}
}
// Eine andere Gruppe
andererNamespace={
eineFunktion:function() {
var beispiel = 'nur eine Beispielsvariable';
// Zugriff auf eine Variable eines anderen Gueltigkeitsbereiches
beispiel = namespace.variable;
}
}
//
window.onload= function(){
// Init Funktionen registrieren
namespace.eineFunktion();
andererNamespace.eineFunktion();
}
// Normale Funktionen sind natürlich trotzdem noch moeglich
function normaleFunktion() {
return true;
}
Bei Fragen einfach posten,
vielleicht hilft es ja jemanden.
Viele Grüße,
Michael