2016-07-29 11 views
2

Erstellen eines Moduls Ich beende das Entwerfen eines Musters, bei dem Methoden an eine Funktion angehängt werden, und ich bin mir nicht sicher, ob es korrekt ist. Es ist eine Closure, die eine Funktion zurückgibt, der einige Methoden angefügt sind, die wiederum die Funktion selbst aufrufen. Ich weiß nicht, ob das eine schlechte Übung ist oder ob es in Ordnung ist. Mein Ziel ist es, Wege zu bieten, die Funktion mit bestimmten Geschenken oder auf verschiedene Arten aufzurufen, aber ich möchte die Fähigkeit behalten, die Funktion einfach in ihrer einfacheren Form aufzurufen. Würde dies zu Speicherlecks oder ähnlichem führen?Fügen Sie einer Funktion, die die Funktion aufruft, eine Methode hinzu

Ich benutze das zu keinem Zeitpunkt, also keine Gefahr, Kontext zu verlieren.

Unten finden Sie ein Code-Snippet mit einer vereinfachten Version.

function factory(general){ 

    var pusher = setTimeout(function(){ console.log('$',general) },1000); 
    var counter = 0; 

    function reporter (specific){ 
     counter++; 
     console.log(counter, general , specific) 
    } 

    reporter.middleware = function (something){ 
     clearTimeout(pusher); 
     return factory (general + something) 
    } 

    return reporter 
} 

Vielen Dank im Voraus.

+0

Ich habe Methoden zu Funktionen in Verwendung hier https://www.npmjs.com/package/page hinzugefügt. Ich persönlich fand es ein bisschen verwirrend, aber es funktioniert. – Emile

Antwort

2

Würde dies zu Speicherlecks oder ähnlichem führen?

Nicht mehr als alles andere. :-)

Da Funktionen in JavaScript die richtigen Objekte sind, können Sie ihnen Eigenschaften hinzufügen, und diese Eigenschaften können sich auf andere Funktionen beziehen. Auf technischer Ebene ist das überhaupt kein Problem. Zum Beispiel macht jQuery es mit seiner $ Funktion, die nicht nur aufrufbar ist ($()), sondern auch verschiedene andere Funktionen ($.ajax, $.Deferred, $.noConflict, etc.) hat.

Ob es guter Stil oder Design ist, ist eine Frage, weitgehend, der Meinung, so ein bisschen off-topic für SO. Es kann gut gehen. Oder es könnte sein, dass es besser wäre, ein Nicht-Funktions-Objekt mit seinen verschiedenen Funktionen als Eigenschaften zurückzugeben.