js單例模式詳細解讀

前言

單例模式 (Singleton) 的實現在於保證一個特定類只有一個實例,第二次使用同一個類創建新對象的時候,應該得到與第一次創建對象完全相同的對象。

反向教材

結果是false,爲什麼呢,因爲創建了兩次A,hh,bb內存指針指向兩個內存地址,所以不相等(PS:這個時候可以結合前言定義來看,我想A只創建一次,第二次不再重新創建,而是使用之前創建的)

    function A(name) {
        var a=1
    }
    var hh=new A()
    var bb=new A()
    console.log(hh===bb)

正面教材

⼀個單⼀對象。⽐如:彈窗,⽆論點擊多少次,彈窗只應該被創建⼀次’ 實現起來也很簡單,⽤⼀個變量緩存即可,上代碼塊(真個文件的在底部):

        var getSingle = function (fn) {
        	var result;
        	return function () {
            	return result || (result = fn.apply(this, arguments));
            }
        };
        var createLoginLayer = function () {
            var div = document.createElement('div');
            div.innerHTML = '我是登錄浮窗';
            div.className = 'model'
            div.style.display = 'none';
            document.body.appendChild(div);
            return div;
        };
        var createSingleLoginLayer = getSingle(createLoginLayer);
        document.getElementById('loginBtn').onclick = function () {
            var loginLayer = createSingleLoginLayer();
            loginLayer.style.display = 'block';
        };

用例:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章