Javascript mixins при использовании шаблона модуля
Некоторое время я использовал шаблон модуля, но недавно начал хотеть смешивать в них функции и свойства, чтобы увеличить повторное использование кода. Я прочитал несколько хороших ресурсов по этому вопросу, но все еще немного не уверен относительно наилучшего подхода. Вот модуль:
var myModule = function () {
var privateConfigVar = "Private!";
//"constructor"
function module() {}
module.publicMethod = function () {
console.log('public');
}
function privateMethod1() {
console.log('private');
}
return module;
}
И вот объект mixin:
var myMixin = function () {};
Mixin.prototype = {
mixinMethod1: function () {
console.log('mixin private 1');
},
mixinMethod2: function () {
console.log('mixin private 2');
}
};
В идеале я хотел бы смешать некоторые методы из других объектов как частные методы, а некоторые как открытые методы, чтобы я мог вызвать некоторую функцию "extension" с параметром "private" / "public". Так что
mixin(myModule, myMixin, "private");
делает методы myMixin доступными в myModule, просто вызывая mixinMethod1 () и имея правильную область видимости, и:
mixin(myModule, myMixin, "public");
делает методы myMixin доступными в myModule путем вызова module.mixinMethod1 () и имеют правильную область видимости
Я попытался использовать метод, который копирует свойства из одного прототипа в другой, я попробовал метод удлинения подчеркивания, чтобы скопировать свойства объекта из одного в другое, и различные вещи между ними. Я думаю, что на данный момент я немного обернулся относительно области применения и прототипов, и мне бы хотелось получить некоторое представление о том, как лучше всего делать миксины, подобные этому, при использовании шаблона модуля. Обратите внимание, что не имеет значения, как выглядит объект myMixin (будь то добавление функций к прототипу или сам модуль), я просто пытаюсь найти способ заставить его работать.
Поблагодарить!