Javascript:自调用单例函数与创建函数实例?

Javascript:自调用单例函数与创建函数实例?,javascript,revealing-module-pattern,Javascript,Revealing Module Pattern,在javascript中显示模块模式时,哪一个更好: 具有自调用函数,在呈现JS时只初始化一次,如下所示: 变量计算器=函数() { 加法=函数(x,y){ 返回x+y; }; 返回{add:add}; }(); document.getElementById(“输出”).innerHTML=calculator.add(5,3);; 3)一个简单的js对象: var calculator = { add(a,b){ return a+b; } }; aler

在javascript中显示模块模式时,哪一个更好:

  • 具有自调用函数,在呈现JS时只初始化一次,如下所示:
  • 
    变量计算器=函数()
    {
    加法=函数(x,y){
    返回x+y;
    };        
    返回{add:add};
    }();
    document.getElementById(“输出”).innerHTML=calculator.add(5,3);;
    
    3)一个简单的js对象:

    var calculator = {
      add(a,b){
       return a+b;
      }
    };
    
    alert(calculator.add(1,2))
    
    由于您既不需要多个实例(第二种方法适用于多个实例),也不需要私有变量(闭包适用于多个实例),因此上一种方法可能是可行的。

    3)一个简单的js对象:

    var calculator = {
      add(a,b){
       return a+b;
      }
    };
    
    alert(calculator.add(1,2))
    

    由于您既不需要多个实例(第二种方法适用于此),也不需要私有变量(闭包适用于此),因此上一种模式可能是最佳选择。

    第一种模式相当于单例模式。如果您想共享一些资源,您可以使用模块化模式创建单个实例,并让每个人都使用该实例。例如一个DBconnection@marvel308:内存分配如何?内存是如何分配给这两个的呢?我建议你去看看。阅读new关键字如何分配内存和关于垃圾回收第一种模式相当于单例模式。如果您想共享一些资源,您可以使用模块化模式创建单个实例,并让每个人都使用该实例。例如一个DBconnection@marvel308:内存分配如何?内存是如何分配给这两个的呢?我建议你去看看。阅读new关键字如何分配内存和关于垃圾收集我把情况简化了。。我只需要在这个对象中公开几个函数,所以需要返回。我将编辑这个问题。我只想了解内存分配在1、2或3中是如何工作的,这样我就可以在需要时选择这些needed@maverick井2实际上不是一个构造函数,而是一个工厂。@maverick你不能比较它们,因为它们是为不同的问题而设计的。对他们进行比较是没有意义的,因为我把情况简单化了。。我只需要在这个对象中公开几个函数,所以需要返回。我将编辑这个问题。我只想了解内存分配在1、2或3中是如何工作的,这样我就可以在需要时选择这些needed@maverick井2实际上不是一个构造函数,而是一个工厂。@maverick你不能比较它们,因为它们是为不同的问题而设计的。比较它们毫无意义