## 高級單例模式
>基于JS高階編程技巧`惰性思想`來實現的單例模式,并且可以把一些常用的設計模式(例如:命令模式、發布閱模式、promise涉及模式等)融合進來,最后清晰的規劃我們的業務代碼,方便后期的二次開發和維護,這種設計思想綜合體就是高級單例模式,也是項目中最常用的。
```
//高級單例模式->有一個不銷毀的私有作用域
var utils = (function(){
//->flag這個變量不銷毀,存儲的是判斷當前的瀏覽器是否兼容getComputedStyle,兼容的話是標準瀏覽器,但是如果flag=false說明當前瀏覽器是IE6~8
//這就是惰性思想
//下面的return{}中的方法若要檢測瀏覽器兼容性就不再需要每次都重新檢測
var flag = "getComputedStyle" in window;
function children(){...}
...
return {
children:children
...
}
})();
```
```
var searchModule = (function(){
function submit(){
...
}
return {
submit:submit
}
})();
searchModule.submit();
//--- --- ---
var searchModule = (function(){
function submit(){
...
}
function fn(){
...
}
return {
init:function(){
this.submit();
this.fn();
}
}
})();
searchModule.init();
//--- --- ---
var searchModule = (function(){
var $searchPlan = $.Callbacks();
function submit(){
...
}
function fn(){
...
}
$searchPlan.add(submit);
return {
init:function(){
$searchPlan.fire();
}
}
})();
searchModule.init();
```
- 空白目錄
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13個核心屬性
- DOM優化
- 回流與重繪
- 未整理
- 文檔碎片
- DOM映射機制
- DOM庫封裝
- 事件
- 功能組件
- table
- 圖片延遲加載
- 跑馬燈
- 回到頂部
- 選項卡
- 鼠標跟隨
- 放大鏡
- 搜索
- 多級菜單
- 拖拽
- 瀑布流
- 數據類型的核心操作原理
- 變量提升
- 閉包(scope)
- this
- 練習題
- 各種數據類型下的常用方法
- JSON
- 數組
- object
- oop
- 單例模式
- 高級單例模式
- JS中常用的內置類
- 基于面向對象創建數據值
- 原型和原型鏈
- 可枚舉和不可枚舉
- Object.create
- 繼承的六種方式
- ES6下一代js標準
- babel
- 箭頭函數
- 對象
- es6勉強筆記
- 流程控制
- switch
- Ajax
- eval和()括號表達式
- 異常信息捕獲
- 邏輯與和或以及前后自增
- JS中的異步編程思想
- 上云
- 優化技巧
- 跨域與JSONP
- 其它跨域相關問題
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重寫和方法重載
- 移動端
- 響應式布局開發基礎
- 項目一:創意簡歷