码迷,mamicode.com
首页 > Web开发 > 详细

JS 单体模式

时间:2015-04-15 23:13:15      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

<!-- ————————JS设计模式 单体模式——————— -->
//1.简单单体模式
var Singleton={
attr1:true,
attr2:10,
method1:function(){
alert("方法一");
},
method2:function(){
alert("方法二");
}
};
//单体模式 划分命名空间(区分代码)
var XL={};//创建自己的命名空间
XL.Singleton2={
attr1:true,
attr2:10,
method1:function(){
alert("方法一");
},
method2:function(){
alert("方法二");
}
};
XL.Singleton2.method1();
//2.借用闭包创建单体 闭包:主要用于保护数据不受外界干扰
XL.Singleton3=(function(){
//添加自己的成员变量
var name="张三";
var f=function(){
alert("f");
};
//把块级作用域的执行结果赋值给单体对象
return {
arrt3:name,
method1:function(){
alert("方法一");
},
method2:function(){
alert("方法二");
},
method3:function(){
return f();
}
};
})();
alert(XL.Singleton3.arrt3);
XL.Singleton3.method3();
//3.惰性单体
XL.Base=(function(){
var uniq;//利用私有变量控制返回单体
function init(){
//私有成员变量
var a1=10;
var a2=true;
var fn1=function(){alert("fn1");};
var fn2=function(){alert("fn2");};
return {
attr3:a1,
attr4:a2,
method4:function(){
return fn1();
},
method5:function(){
return fn2();
}
};
}
return {
gentInstance:function(){
if(!uniq){//如果单体的实例不存在 创建实例单体
uniq=init();
}
return uniq;
}
}
})();
XL.Base.gentInstance().method5();
//4.分支单体 判断程序的分支用于浏览器差异检测
var def=true;
XL.More=(function(){
var objectA={//火狐浏览器
fix:"ff"

};
var objectB={//IE浏览器
fix:"Ie"
}
return (def)?objectA:objectB;
})();
alert(XL.More.fix);

JS 单体模式

标签:

原文地址:http://www.cnblogs.com/jalja/p/4430230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!