单例
单例是一个全局变量,使用单例可以更好的控制全局变量,还可以利用分支技术来封装浏览器之间的差异。网页中使用全局变量由于可以被重写风险很大。所以使用单例会更好的控制全局变量。
懒加载
单例模式多数都是在加载脚本的时候被创建出来。不过对于一些使用方式单例适合在用到的时候被加载,所以需要一个可以懒加载的单例。
分支
是一种区分运行环境差异的技术,更加有效的针对加载的环境来定制代码,达到更好的灵活性。
代码
var os = require("os");
Singleton = (function () {
var uniqueInstance; // 单例实体
constructor = function () { // 单例初始化
return function Singleton () {
var count = 10;
function initCount(){
count = 10;
}
this.getCount = function () {
return count;
}
this.setCount = function (value) {
count = value;
};
this.init=function(){
initCount();
}
};
}();
return {
getInstance: function () {
if (!uniqueInstance) { // 判断是否初始化过
uniqueInstance = new constructor();
}
return (os.type()==='Windows_NT')?uniqueInstance:undefined;//单例分支使单例有更高的兼容性
}
}
})();
var S=Singleton .getInstance();//懒加载,在这里开始加载和创建实例。
console.log(S.count);
console.log(S.getCount());
S.setCount(550);
console.log(S.getCount());
//S.initCount();
S.init();
console.log(S.getCount());
总结
单例主要在于代码的整洁性,是全局变量变得可控,使用懒加载可以减少不必要的内存消耗。分支提高不用环境的兼容性,只需判断一次环境而不用在每次使用都判断环境。