Guten Morgen,
ich habe jetzt doch noch mal ein paar Zeilen dazu gelesen.
Wenn ich mit JavaScript was über mehrere Dateien hinweg machen und es nicht einfach so "hinrotzen" würde, dann würde ich dem ganzen wohl einen eigenen Namensraum geben:
var ns = ns || {};
Packst du das oben in jede deiner JavaScript-Dateien, dann bekommt ns entweder das Objekt ns aus einer deiner anderen Dateien (wenn sie geladen wurde) zugewiesen, oder aber es wird per Objekt-Literal ein neues Objekt erzeugt, was du dann beliebig erweitern kannst:
ns.debug = function(){ alert('fnord!') };
Mhm, also den Einsatz von Namensräumen, wie er hier erklärt wird, finde ich schon einleuchtend. Wie du schon gesagt hast, das löst mein Problem nicht.
Und den Einsatz der beiden Striche in deinem ersten Beispiel verstehe ich nicht ganz. In geschriebener Langform: Der lokalen Variable ns wird entweder ns zugewiesen, sofern existent, ansonsten ein leeres Literal {}. Richtig?
Ich habe hier zwei Klassen (OT: nennt man die in Javascript überhaupt so? ) und eine main-Klasse, von daher sind Namensräume erst mal zweitrangig, zumindest für die Struktur.
Aber immerhin gut zu wissen, dass sich sowas auch mit Javascript realisieren lässt.
Sowohl der Google Closure Compiler als auch UglifyJS können das.
Danke für die Links, an sowas dachte ich noch nie, auch wenn mir die Idee durch die minimalisierten Versionen von jQuery zB bekannt war.
Gruß Patrick