Javascript-Mixins bei Verwendung des Modulmusters

Ich verwende das Modulmuster seit einiger Zeit, habe aber kürzlich begonnen, Funktionen und Eigenschaften in sie zu mischen, um die Wiederverwendung von Code zu erhöhen. Ich habe einige gute Ressourcen zu diesem Thema gelesen, bin mir aber immer noch nicht sicher, wie ich am besten vorgehen soll. Hier ist ein Modul:

var myModule = function () {
    var privateConfigVar = "Private!";

    //"constructor"
    function module() {}

    module.publicMethod = function () {
        console.log('public');
    }

    function privateMethod1() {
        console.log('private');
    }

    return module;
}

Und hier ist ein Mixin-Objekt:

var myMixin = function () {};
Mixin.prototype = {
    mixinMethod1: function () {
        console.log('mixin private 1');
    },
    mixinMethod2: function () {
        console.log('mixin private 2');
    }
};

Im Idealfall möchte ich einige Methoden aus anderen Objekten als private Methoden und einige als öffentliche Methoden einmischen, damit ich eine "extend" -Funktion mit einem Parameter als "private" / "public" aufrufen kann. Damit

mixin(myModule, myMixin, "private");

Stellt die myMixin-Methoden in myModule zur Verfügung, indem Sie einfach mixinMethod1 () aufrufen und den richtigen Bereich haben.

mixin(myModule, myMixin, "public");

Stellt die myMixin-Methoden in myModule durch Aufrufen von module.mixinMethod1 () zur Verfügung und verfügt über den richtigen Gültigkeitsbereich

Ich habe versucht, eine Methode zu verwenden, mit der Eigenschaften von einem Prototyp auf einen anderen kopiert werden. Außerdem habe ich die Methode "Underscore Extend" verwendet, um Eigenschaften des Objekts von einem auf das andere zu kopieren, und verschiedene Dinge dazwischen. Ich denke, dass ich mich in Bezug auf Umfang und Prototypen ein bisschen umgedreht habe, und würde gerne eine Anleitung erhalten, wie solche Mixins am besten mit dem Modulmuster erstellt werden können. Beachten Sie, dass es keine Rolle spielt, wie das Objekt myMixin aussieht (ob Sie dem Prototyp Funktionen hinzufügen oder ein Modul selbst). Ich versuche nur, einen Weg zu finden, wie es funktioniert.

Danken!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage