Нет ничего плохого в вашем подходе, при условии:
- Вы загружаете скрипт подмодуля после скрипта модуля
- Вы не пытаетесь получить доступ к скрипту подмодуля до его загрузки
- Вы согласны с тем, что ваш основной модуль зависит от существования субмодуля. (Я не уверен, что это хорошая идея.)
Боковой вопрос
Ваш код в настоящее время имеет синтаксическую ошибку в следующей строке:
var Module.Utils = (function() {
Не должно быть ключевого слова var
, предшествующего назначению.
Пример кода
Вот упрощенная версия вашего кода, разделенная, чтобы показать только методы, которые я вызываю, демонстрирующие, что ваш подход работает:
var Module = (function() {
function B() {
console.log("Module: B");
Module.Utils.C(); /* accessing submodule public methods */
};
return {
B: B
};
})();
var Module = Module || {};
Module.Utils = (function() {
function C() {
console.log("Module.Utils: C");
};
return {
C: C
}
})();
Module.B();
Выход:
Module: B
Module.Utils: C