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!