gpt4 book ai didi

Javascript 模块模式和空对象

转载 作者:行者123 更新时间:2023-12-03 03:31:02 25 4
gpt4 key购买 nike

当使用模块模式扩展模块时,我们会执行以下操作:

var NewModule = (function (Main) {

Main.extension = function () {};
return Main;

})(Main || {});

效果很好,问题是,如果未声明 Main,我们可以通过传递空对象来避免错误 Main || {}。我们如何防止这种依赖关系被破坏?当然,一开始我们不会遇到任何错误,但如果我们无法将扩展附加到 Main,我们将遇到其他类型的错误。

最佳答案

如果目标是扩展 Main,您通常不会分配给NewModule。你宁愿这样做

// a.js
var Main = (function (localMain) {
localMain.extensionA = function () {};
return localMain;
})(Main || {});

我们这样做是为了可以拥有多个这样的模块:

// b.js
var Main = (function (localMain) {
localMain.extensionB = function () {};
return localMain;
})(Main || {});

它们都将创建或扩展Main对象,因此它们加载的顺序并不重要 - 都是a.js, b.jsb.js, a.js 可以工作。该模式有时也被简化为

(function (localMain) {
localMain.extension = function () {};
})(Main = Main || {});

(尽管缺少 var 声明)。

如果您的模块(尤其是 newModule)确实对主模块具有实际依赖,并且要求在执行之前加载它,则您不会使用此默认模式。

关于Javascript 模块模式和空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101768/

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