## 高级单例模式
>基于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
- 方法重写和方法重载
- 移动端
- 响应式布局开发基础
- 项目一:创意简历