2016-03-25 5 views
-1

Ich versuche, eine JS-Datei für unser Projekt zu erstellen, die einige allgemeine Dienstprogrammfunktionen verfügbar macht. Ich habe die folgenden zwei Muster vorher benutzt, aber nicht vollständig mit ihnen überzeugt.Identifizieren des besten Musters für das Aussetzen von JS-Dienstprogrammfunktionen

Muster 1

var objUtils = { 
 
\t foo: function(){ 
 
\t \t //code 
 
\t }, 
 
\t bar: function(){ 
 
\t \t //code 
 
\t \t //foo can't be called 
 
\t } 
 
}

Das Problem mit dem obigen Muster ist, dass ich Quer aufrufen aufrufen kann, die Funktionen.

Muster 2

var objUtils = (function(){ 
 
\t var foo = function(){ 
 
\t }, 
 
\t bar = function(){ 
 
\t } 
 
\t 
 
\t return{ 
 
\t \t foo : foo, 
 
\t \t bar : bar 
 
\t } 
 
})();

Das Problem mit dem obigen Muster ist, dass jedes Mal, wenn ich eine neue Funktion, die ich sicher zu machen habe hinzufügen, dass ich es mit dem Rückblock hinzufügen um es offen zu legen, was ich als eine Art überflüssige Arbeit empfinde.

Irgendwelche Gedanken?

+2

'foo' kann innerhalb von 'bar' wie' this.foo() ', wenn man es so nennen genannt werden wie' objUtils.bar() ' – elclanrs

+1

Named Exporte aus ES6 Module sind das eine und in diesen Tagen nur richtig. – Bergi

+0

Das war albern Ich werde das nicht versuchen.foo(). Weg zu gehen. – NLV

Antwort

1

Sie können das JavaScript-Modulmuster verwenden. Sie erstellen ein Objekt mit den Funktionen, die Sie anzeigen möchten, und fügen Ihre Funktionen direkt zu diesem Objekt hinzu. Zum Beispiel:

var objUtils = (function() { 
    var moduleObj = {}; 

    moduleObj.foo = function() { 
     // ... 
    }; 

    moduleObj.bar = function() { 
     // ... 
    }; 

    return moduleObj; 
}()); 
Verwandte Themen