前言
單例模式 (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';
};
用例: