<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
/* 单体
简单单体
闭包单体
惰性单体
分支单体 */ // 1 简单单体模式(单例模式),不能new了,用于全局资源,公共数据。
var Singleton = {
attr1: true ,
attr2: 10 ,
method1 : function(){
alert('我是方法1');
},
method2 : function(){
alert('我是方法2');
}
};
alert(Singleton.attr1); // 补充 :划分命名空间 (区分代码),大对象.小对象, Ext.Manager.attr1 / method1
var BHX = {};
BHX.Singleton = {//json里面不用this和var,
attr1: true ,
attr2: 10 ,
method1 : function(){
alert('我是方法1');
},
method2 : function(){
alert('我是方法2');
}
};
BHX.Singleton.method1(); // 2 上面Singleton里面的属性还是可以更改。借用闭包保护数据
var BHX = {} ;
BHX.Singleton = (function(){//(function(){})()
// 添加自己的私有成员
var a1 = true ;
var a2 = 10 ;
var f1 = function(){
alert('f1');
}
var f2 = function(){
alert('f2');
}
// 把块级作用域里的执行结果赋值类我的单体对象
return { //返回要执行才return
attr1: a1 ,
attr2: a2 ,
method1 : function(){
return f1();
},
method2 : function(){
return f2();
}
} ;
})();//Singleton = {attr1: a1 ,attr2: a2 ,method1 :method2 : } alert(BHX.Singleton.attr1);//改变Singleton不会改变var a1,a2
BHX.Singleton.method1();
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf8>
// 惰性单体(和闭包单体有一些相似的地方)
// 命名空间
var Ext = {} ;
Ext.Base = (function(){
// 私用变量 控制返回的单例对象
var uniqInstance ; // undefined
// 需要一个构造器 init 初始化单体对象的方法
function init(){
// 私用成员变量
var a1 = 10 ;
var a2 = true ;
var fn1 = function(){alert('fn1')};
var fn2 = function(){alert('fn2')};
return {
attr1 : a1 ,
arrt2 : a2 ,
method1 : function(){
return fn1();
},
method2 : function(){
return fn2();
}
};
}
return {//不像之前的,代码一执行,Base就有了很多属性,这里只有一个方法。
getInstance : function(){//只有Base调用了方法才返回很多属性,
if(!uniqInstance){ //每次返回同一个对象,不加判断就返回不是同一个对象,
uniqInstance = init();
}
return uniqInstance ;
}
};
})(); alert(Ext.Base.getInstance().attr1);
Ext.Base.getInstance().method1(); // 分支单体 (判断程序的分支 <浏览器差异的检测>)
var Ext = {} ;
var def = false ;
Ext.More = (function(){
var objA = { // 火狐浏览器 内部的一些配置
attr1:'FF属性1'
// 属性1
// 属性2
// 方法1
// 方法2
} ;
var objB = { // IE浏览器 内部的一些配置
attr1:'IE属性1'
// 属性1
// 属性2
// 方法1
// 方法2
} ;
return (def) ?objA:objB;
})();
alert(Ext.More.attr1);
</script>
</head>
<body>
</body>
</html>

最新文章

  1. jquery 双向select控件bootstrap Dual listbox
  2. android:ToolBar详解
  3. 基于android平台的出题软件---- 每日30题
  4. Twisted
  5. leetCode 354. Russian Doll Envelopes
  6. HTTP常见状态码 200 301 302 404 500
  7. 给java应用打包
  8. elFinder的使用并整合ckeditor
  9. careercup-树与图 4.1
  10. 第 10 章 建造者模式【Builder Pattern】
  11. Raid1源代码分析--写流程
  12. POJ 3723 Conscription(并查集建模)
  13. C#访问MySQL数据库(winform+EF)
  14. [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
  15. spring使用redis做缓存
  16. HOW to Use QP_PREQ_PUB.PRICE_REQUEST API to Price an Item
  17. 阿里云centos5升级yum源为6
  18. Java环境配置之JDK安装
  19. mysql 案例~select引起的性能问题
  20. WCF开发实战系列一:创建第一个WCF服务 转

热门文章

  1. Java基础学习总结(13)——流IO
  2. quick 3.3载入Spine问题
  3. bzoj1066【SCOI2007】蜥蜴
  4. MKVToolNix v8.2
  5. TRIZ系列-创新原理-7-嵌套原理
  6. Error 0x80070020 when you try to start a Web site in IIS 7.0
  7. centos7 出现please make your choice from 1 to enter..
  8. 洛谷 P1900 自我数
  9. java之JMX
  10. Levmar:Levenberg-Marquardt非线性最小二乘算法