在 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>
在第一个中,我读到的好处是每个函数只会初始化一次,而在第二个中,我们将为每个初始化的对象拥有函数的副本。
但是第一个的问题是它会在 JS 加载期间做一些工作来制作单个副本。
我很困惑为什么在 case2 中我们会在内存中拥有多个函数副本,因为内存应该分配给变量而不是函数。
这两种方法哪一种是正确的以及如何决定何时选择哪一种?
最佳答案
3)一个简单的js对象? :
var calculator = {
add(a,b){
return a+b;
}
};
alert(calculator.add(1,2))
由于您既不需要多个实例(第二种方法适合),并且没有私有(private)变量(闭包适合),则上层可能是最佳选择。
关于Javascript:自调用单例函数与创建函数实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662175/