Javascript:自调用单例函数vs创建函数的实例?
问题描述:
哪一个是更好地在JavaScript中透出模块化模式来实现:Javascript:自调用单例函数vs创建函数的实例?
- 有自调用函数,这将在JS被渲染的时间内得到intialized只有一次,就像这样:
<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
@ marvel308:内存分配情况如何?内存如何分配给这两个? – maverick
我建议通过https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management。并阅读新关键字如何分配内存和垃圾回收 – marvel308