如何根据模块模式访问/创建子模块?
我希望能够从Modules.js主文件中的子模块访问方法。
Module.js
var Module = (function() {
function A(){
console.log("Module: A");
B();
};
function B(){
console.log("Module: B");
Module.Utils.C(); /* Here is the problem */
};
return {
A:A,
B:B
}
} ());
$(function() {
Module.A();
});
Module.Utils.js
var Module = Module ? Module : {};
Module.Utils = (function() {
var settings = {
x : 1,
y : 2
};
function C(){
console.log("Module.Utils: C");
};
function D(){
console.log("Module.Utils: D");
};
return {
C:C,
D:D
}
}());
答案 0 :(得分:8)
你的方法没有错,提供:
您的代码目前在以下行中出现语法错误:
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
答案 1 :(得分:3)
您应该考虑使用像RequireJS这样的实际模块框架。
“子模块”只是一个位于module/utils
的模块,而您的module
模块将需要它作为依赖项,RequireJS会为您解决这个问题。