Mixins de Javascript ao usar o padrão de módulo

Eu tenho usado o padrão de módulo por um tempo, mas recentemente comecei a querer misturar funções e propriedades neles para aumentar a reutilização de código. Eu li alguns bons recursos sobre o assunto, mas ainda estou um pouco incerto quanto à melhor abordagem. Aqui está um módulo:

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

    //"constructor"
    function module() {}

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

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

    return module;
}

E aqui está um objeto mixin:

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

Idealmente, eu gostaria de misturar alguns métodos de outros objetos como métodos privados e alguns como métodos públicos, para que eu pudesse chamar uma função de "extensão", com um parâmetro como "privado" / "público". De modo a

mixin(myModule, myMixin, "private");

disponibiliza os métodos myMixin no myModule apenas chamando mixinMethod1 () e tem o escopo correto, e:

mixin(myModule, myMixin, "public");

disponibiliza os métodos myMixin no myModule chamando module.mixinMethod1 () e tem escopo correto

Eu tentei usar um método que copia propriedades de um protótipo para outro, eu tentei o método de estender underscore para copiar propriedades do objeto de um para o outro e várias coisas entre. Eu acho que estou um pouco virado sobre escopo e protótipos neste momento, e adoraria alguma direção sobre a melhor forma de fazer mixins como este ao usar o padrão de módulo. Note que não importa como o objeto myMixin se parece (se adicionando funções ao protótipo, ou um módulo em si), eu estou apenas tentando descobrir alguma maneira de fazê-lo funcionar.

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion