【发布时间】:2013-10-18 15:04:48
【问题描述】:
好的,假设我有一个在“显示模块模式”中设置的网络应用程序(Javascript),并且我有两个使用完全相同数据的模块。
示例:
(让我们假设这两个函数位于不同的模块中是有原因的。毕竟这只是一个示例)
var modOne = (function () {
var foos = document.getElementsByClassName("foo");
var hideFoos function () {
var i;
for (i=0; i < foos.length ; i++) {
foos[i].style.visibility = "hidden";
}
}
return {
hideFoos: hideFoos
};
})();
var modTwo = (function () {
var foos = document.getElementsByClassName("foo");
var showFoos function () {
var i;
for (i=0; i < foos.length ; i++) {
foos[i].style.visibility = "visible";
}
}
return {
showFoos: showFoos
};
})();
如您所见,每个模块中都声明了一个相同的变量 (var foos)。这似乎是多余的,但在另一个变量中引用该变量会使一个模块依赖于另一个模块。所以你不妨把它们结合起来。我看到的第三个选项是将共享变量创建为全局变量,这有点违背了拥有模块的目的。
所以基于这三个选项,我会说在每个模块中单独定义变量将是最好的选择。
这对吗?
【问题讨论】:
-
只需在自己的模块中创建
showFoos函数,并在modOne和modTwo函数中继承shoFoos。showFoos函数定义旁边有一个语法错误。在showFoos之后应该有一个=符号。 -
我想我宁愿让模块与特定元素分离。
标签: javascript module-pattern revealing-module-pattern