In meiner Antwort auf Struppis Beitrag habe ich schon einiges dazu geschrieben, was ich erreichen will und möchte daher hier nur auf Details eingehen.
Dass Struppi Funktionen genommen hat, war nur ein Beispiel, du kannst auch Objects nehmen und es funktioniert genauso.
this.module1 = { version : ..., init : ..., ... };
this.module2 = { version : ..., init : ..., ... };
Das habe ich verstanden.
Und vordefinierte Werte zu überschreiben, wäre wohl dann etwas komplizierter, wenn ich das richtig erfasst habe.
Was meinst du damit? Welche vordefinierten Werte?
Die Funktionen, welche von außen (öffentlich?) benutzbar sein sollen, können vordefinierte Werte haben. Es soll aber auch möglich sein, diese Werte möglichst einfach vor dem Aufruf der Funktion zu überschreiben. Natürlich könnte man diese Werte im Funktionsaufruf selbst übergeben, aber dadurch wird der Aufruf und die Definition für Laien komplizierter. Einfache Zuweisungen versteht so ziemlich jeder und ein Funktionsaufruf ist auch noch einfach, aber wenn im Aufruf Objektstrukturen übergeben werden, kann das leicht zu Fehlern führen.
Nach meinem Posting bin ich auf die Idee gekommen, die Definition doch außerhalb vorzunehmen:
lib.modules = [lib.func1, lib.func2];
Ich glaube, du denkst gerade superkompliziert, viel zu kompliziert für JavaScript.
Das befürchte ich auch ...
Was hast du mit diesem Array vor?
Wann greifst du z.B. auf modules[0] zu, wo du nicht modules.module1 verwenden kannst oder willst? (Warum?)
Ich greife dann über den Array zu, wenn ich gar nicht weiß, welche Module es gibt. In diesem Beispiel würde ich Eigenschaften (z.B. die Versionsbezeichnung) über alle enthaltenen Elemente ausgeben. Welche das sind, sollte intern definiert werden.
Ralf