博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS单例模式在工作中的使用
阅读量:4292 次
发布时间:2019-05-27

本文共 1377 字,大约阅读时间需要 4 分钟。

为了尽可能的减少全局变量的污染,在写js的时候可以采用单例模式,形式如下:

比如有一个js叫demo.js,那么我们可以在js里这样写:

var demo = {}

这样做的目的是将整个js当成一个对象,这样暴露在外的全局变量就只有demo这一个命名,不像我们平常写直接写很多函数,这都是对全局空间的一种污染,一旦项目中别人也取了同样的名称,那么就容易出问题了。

function xxx1{}function xxx2{}function xxx3{}

同时为了方便维护管理js,还可以对demo内部进行划分模块,可以按照页面划分,也可以按照具体功能模块划分。

比如按照页面划分的写法:
var demo = {
page1: { setSlide:function{ //这里去进行轮播图的相关设置 }      },
page2: { setSlide:function{ //这里去进行轮播图的相关设置 }      }
}

可以看到,如果单纯按照页面去划分,那么页面与页面的之间的js可以分离的很清楚,但是也有一个弊端,即如果两个甚至多个页面拥有相同的功能,那么会需要去调用其它页面的js,这样不是很利于维护。

所以我们还可以按照功能+页面混合模式来划分模块,例如:
var demo = {
// 将公用的功能抽离
setSlide: function{        // do something    },
page1: {        _setSlide: function{ // 直接调用通用方法 demo.setSlide;        }    },
page2: {        _setSlide: function{ // 直接调用通用方法 demo.setSlide;        }    }
}

以上代码只是举个例子,我们可以进一步完善一下:
var demo = {
// 将公用的功能抽离
setSlide: function{        // do something    },
page1: {        Init: function{ this._setSlide.verify;        },
_setSlide: function{
// 直接调用通用方法 demo.setSlide; //还可以做其他事情 ...... // 返回this,那么就能实现链式调用了 return this; },
verify:function{ //做些事情 ......        }
},
page2: {       Init: function{ this._setSlide;        },
_setSlide: function{ // 直接调用通用方法 demo.setSlide; //还可以做其他事情        }
}
}

可以看到,我们在每个页面模块里增加了一个Init方法,我们可以叫它页面初始化方法,它的作用就是集中调用其它方法,相当于这个页面的入口,这样我们只要看到这个方法就大概能知道我们调用了哪些方法了,而不需要在页面里去分别的调用。维护起来更方便些。

关于在工作中使用单例模式的方法就说到这了,有不足的地方欢迎大神指点,有不懂的地方欢迎留言。

转载地址:http://edggi.baihongyu.com/

你可能感兴趣的文章
Android常用的框架有哪些
查看>>
SSL 证书创建与部署
查看>>
学习搭建人工智能环境遇到的问题
查看>>
自己编写的计算器
查看>>
视频物体检测
查看>>
Tomcat启动遇到的问题
查看>>
Gradle-gradlew
查看>>
grpc-整合gradle与代码生成
查看>>
grpc-gradle与grpc流程完美整合(3)
查看>>
设计模式-装饰模式(Decorator)
查看>>
git-子模块submodule
查看>>
设计模式-策略模式(Strategy)
查看>>
设计模式-观察者模式(Observer)
查看>>
java浅拷贝(shallow clone)与深拷贝(deep clone)
查看>>
Elasticsearch-terms搜索及结果优化
查看>>
Elasticsearch-对一个field进行多值全文本搜索
查看>>
Elasticsearch-best_fileds和most_fields策略分析以及cross-fields弊端的解决
查看>>
Elasticsearch-近似搜索
查看>>
netty源码分析之-Future、ChannelFuture与ChannelPromise详解(3)
查看>>
redis主从集群的搭建
查看>>