簡體   English   中英

使用功能的私有功能的引用創建對象

[英]Creating Objects with the references of a function's private functions

我遇到了一個摘要,我懷疑它是否可以以簡單的方式編寫。 有人可以告訴我以下兩個摘要之間的區別是什么:

var printer = (function () {
  var printerInstance;
  var obj = {
     f1: function() {},
     f2: function() {}
  };
  return {
     getInstance: function() {
       if(!printerInstance) {
         printerInstance = obj;
       }
       return printerInstance;
     }
   };
})();

var printer = (function () {
     var printerInstance;
     function create() {
       function f1() {}
       function f2() {}
       return {
          f1: f1,
          f2: f2
       }
     }

     return {
       getInstance: function() {
         if(!printerInstance) {
           printerInstance = create();
         }
         return printerInstance;
       }
     };
})();

我不明白為什么在第二個示例中的函數內部創建了對象。 請澄清。

好吧,第一個對象在所有調用中都有一個名為obj對象,第二個obj為每個調用都創建了一個新對象。

舉例來說,它是:

var obj = {
   var counter = 0;
   f1: function() { return counter++; },
   f2: function() {}
};

第二個是:

function create() {
  var counter = 0;
  function f1() { return counter++; }
  function f2() {}
  return {
     f1: f1,
     f2: f2
  }
}

在第一種情況下,有一個對象帶有一個counter ,所有getInstance調用(其中printerInstance等於null )都將引用該對象。 因此,這更像是Singleton

在第二種情況下,每次對getInstance調用都將擁有其自己的計數器並獨立計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM