【发布时间】:2018-01-21 13:31:40
【问题描述】:
在javascript中揭示模块化模式哪个更好:
- 拥有一个自调用函数,该函数将在 JS 渲染时只初始化一次,如下所示:
<div id="output">
</div>
<script>
var calculator = function()
{
add = function(x,y){
return x+y;
};
return { add:add };
}();
document.getElementById("output").innerHTML = calculator.add(5,3);;
</script>
- 有一个构造函数来执行此操作:
<div id="output">
</div>
<script>
var calculator = function()
{
add = function(x,y){
return x+y;
};
return { add:add };
};
document.getElementById("output").innerHTML = new calculator().add(5,3);
</script>
在第 1 中,我读到的好处是每个函数将只初始化一次,而在第 2 中,我们将为每个初始化的对象拥有函数的副本。
但第一个问题是它会在 JS 加载期间制作单个副本。
我很困惑为什么在 case2 中我们会在内存中有多个函数副本,因为内存应该分配给变量而不是函数。
这两种方法中哪一种是正确的?如何决定何时选择哪一种?
【问题讨论】:
-
第一个模式相当于单例模式。如果您想共享一些资源,您可以使用模块化模式来创建单个实例并让每个人都使用该实例。例如数据库连接
-
@marvel308:内存分配呢?如何为这两者分配内存?
-
我建议通过developer.mozilla.org/en-US/docs/Web/JavaScript/…。并阅读 new 关键字如何分配内存和垃圾回收
标签: javascript revealing-module-pattern