Deine Variante hat den Nachteil, dass du keinen gemeinsamen Scope hast, also auch keine lokale Package Variabel (um das ein bisschen Perl'isch auszudrücken) hast. Daher bevorzuge ich mittlerweile diese Variante:
var lib = new function() {
this.func1 = function() { /* .../ };
this.func2 = function() { / ...*/ };
var module = [];
for(var f in this) if(typeof this[f] == 'function') module.push(f);
this.module = function() { return module; };
}
alert( lib.module())
Sieht interessant aus. Dann müsste ich aber auch jegliche Werte, die ich jetzt in Unterobjekten definiert habe, in Funktionen kapseln? Und vordefinierte Werte zu überschreiben, wäre wohl dann etwas komplizierter, wenn ich das richtig erfasst habe.
Nach meinem Posting bin ich auf die Idee gekommen, die Definition doch außerhalb vorzunehmen:
~~~javascript
lib.modules = [lib.func1, lib.func2];
Ralf