Struppi: JS-Bibliothek strukturieren

Beitrag lesen

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.  
  
Wenn das Skript natürlich jetzt schon umfangreicher ist, ja.  
Du kannst auch die ganze Struktur in die Konstruktorfunktion legen.  
~~~javascript
var lib = new function() {  
var lib = {  
func1: function() { /* ...*/ },  
func2: function() { /* ...*/ }  
};  
var module = [];  
for(var f in lib) if(typeof lib[f] == 'function') module.push(f);  
lib.module = function() { return module; };  
return lib;  
}  

Nach meinem Posting bin ich auf die Idee gekommen, die Definition doch außerhalb vorzunehmen:

Was ich nicht für schön halte. Was ist wenn du auf die Idee kommst die Bibliothek MyLib zu nennen?

lib.modules = [lib.func1, lib.func2];

Dann müßtest du hier alles ersetzen. In OOP versucht man so wenig wie möglich konkret zu werden, möglichst viel Kapseln (in deinem Konstrukt sind z.b. keine lokalen Bibliotheksvariabeln möglich).

Struppi.