gpt4 book ai didi

JavaScript 模块模式——如何创建子模块

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:12 28 4
gpt4 key购买 nike

如何根据模块模式访问/创建子模块?

我希望能够从我的 Modules.js 主文件中的子模块访问方法。

模块.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();
});

模块.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
}

}());

最佳答案

您的方法没有任何问题,前提是:

  • 在模块脚本之后加载子模块脚本
  • 在加载子模块脚本之前不要尝试访问它
  • 您可以让主模块依赖于子模块的存在。 (我不太确定这是个好主意。)

附带问题

您的代码当前在以下行中存在语法错误:

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

关于JavaScript 模块模式——如何创建子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824531/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com