javascript 單例模式

來源:互聯網
上載者:User

標籤:

單例模式經典應用:

如:window中的工作管理員,資源回收筒等應用,一直都會維持一個僅有的執行個體,又如網站的計數器利用單例模式實現同步。

javascript單例模式:

1、懶漢式,即只有在需要建立對象執行個體的時候才會建立對象。

<script type="text/javascript">var Singleton = (function(window){var instance = null;//工作管理員//放在自執行函數中,避免外部直接通過new的方式建立對象function TaskManager(){this.count = 0;}//提供給外部介面,擷取執行個體對象function getInstance(){if(instance === null) {instance = new TaskManager();}return instance;}//擴充方法TaskManager.prototype = {constructor : TaskManager,size : function(){this.count++;return this.count;}};return {getInstance:getInstance};})(window);var instance = Singleton.getInstance();alert(instance.size());    //1var instance2 = Singleton.getInstance();alert(instance2.size());   //2</script>
代碼中通過Singleton.getInstance();擷取TaskManager執行個體對象,且TaskManager對象只會建立一次,且該執行個體對象共用。

所以instance2.size()會列印2.

且此時instance1 === instance2。

2.餓漢式單例模式實現,將先初始化執行個體對象,注意執行個體初始化的位置。

<script type="text/javascript">var Singleton = (function(window){var instance ;function TaskManager(){this.count = 0;}//提供給外部介面,擷取執行個體對象function getInstance(){return instance;}//擴充方法TaskManager.prototype = {constructor : TaskManager,size : function(){this.count++;return this.count;}};//執行個體初始化instance = new TaskManager();return {getInstance:getInstance};})(window);var instance = Singleton.getInstance();alert(instance.size());var instance2 = Singleton.getInstance();alert(instance2.size());</script>
如果在第一步就var instance = new TaskManager();此時由於後續TaskManager重寫了原型方法,新增了size()方法,如果寫在之前,那麼通過Singleton.getInstance()擷取的TaskManager執行個體對象是不會存在size方法,這時會拋出instance.size()方法未定義異常。





javascript 單例模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.