🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 高级单例模式 >基于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(); ```