使用Module模式扩展模块时,我们会这样做:
var NewModule = (function (Main) {
Main.extension = function () {};
return Main;
})(Main || {});
这很有效,问题是,如果未声明Main,我们通过传递空对象Main || {}
来避免错误。我们如何防止这种依赖性破坏?当然,我们一开始不会有任何错误,但如果我们无法将我们的扩展附加到Main,我们将遇到其他类型的错误。
答案 0 :(得分:1)
如果目标是扩展 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.js
和{{ 1}}会起作用。该模式有时也简化为
b.js, a.js
(虽然缺少(function (localMain) {
localMain.extension = function () {};
})(Main = Main || {});
声明)。
如果你的模块(特别是你的newModule)在主模块上确实有一个实际的依赖,并且要求它在执行之前加载,你就不会使用这个默认模式。