4-JavaScript设计模式——单体
来源:互联网 发布:台湾死刑知乎 编辑:程序博客网 时间:2024/05/16 08:17
1、单体分类:
简单单体、闭包单体、惰性单体、分支单体。
2、代码实例:
1、简单单体
var Singleton = {};// 最简单的单体
// 给单体添加属性和方法var J = { name : '张三', age : 18, study : function(){ alert(this.name + '正在学习...'); }};J.study(); // 张三正在学习...
// 单体可用于划分命名空间(常用)var J = {};J.sayHello = function(){ alert('Hello world!');};
2、闭包单体
// 闭包的主要目的是 保护数据// 创建闭包单体var J = {};// 创建命名空间JJ.Singleton = (function(){ // 闭包的主要目的:添加自己的私有成员,外部无法访问 var a1 = 'red'; var a2 = 666; var f1 = function(){ alert('我是方法1'); }; var f2 = function(){ alert('我是方法2'); }; // 把块级作用域的执行结果直接赋值给单体对象 return { color : a1, size : a2, method1 : function(){ return f1(); }, method2 : function(){ return f2(); } };})();alert(J.Singleton.color); // redJ.Singleton.method1(); // 我是方法1
3、惰性单体
// 惰性单体(和闭包单体有一些相似之处)// 命名空间var J = {};J.Singleton = (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, attr2 : a2, method1 : function(){alert('fn1');}, method2 : function(){alert('fn2');} }; } return { getInstance : function(){ if(!uniqInstance){ // 如果不存在,创建单体实例 uniqInstance = init(); } return uniqInstance; } };})();var obj = J.Singleton.getInstance();alert(obj.attr1); // 10obj.method1(); // fn1
4、分支单体
// 分支单体 (判断程序的分支《多用于浏览器差异的检测》)var J = {}; // 命名空间var def = true; // true代表火狐,false代表IEJ.More = (function(){ var objA = { // 火狐浏览器 内部的一些配置 attr1 : '我是火狐浏览器' }; var objB = { // IE浏览器 内部的一些配置 attr1 : '我是IE浏览器' }; return def ? objA : objB;})();alert(J.More.attr1); // 我是火狐浏览器
阅读全文
1 0
- 4-JavaScript设计模式——单体
- 《Javascript设计模式》读书笔记——单体模式
- javaScript几种设计模式之一——单体模式
- JavaScript设计模式 --- 单体模式
- javascript设计模式 单体模式
- javascript 设计模式-单体模式
- javascript设计模式读书笔记(1)--单体模式
- JavaScript设计模式学习笔记:单体模式
- javascript设计模式之单体模式
- javascript设计模式-单体singleton模式(2)
- js设计模式——单例/单体模式
- 设计模式------单体模式
- javascript设计模式_第二部分_单体模式
- JavaScript 设计模式之----单体(单例)模式
- JavaScript 设计模式之----单体(单例)模式
- Javascript单体模式
- javascript 单体模式
- 单体设计模式
- 人工智能全球化,中国科技企业正在加速布局/智库2861
- 数据模型访问结构
- 100个句子直刷7000单词
- vue实战笔记--基础知识概要
- redis 主从配置
- 4-JavaScript设计模式——单体
- 二叉树的实现
- windows下单步调戏presto
- 一个url对应多个文章
- HTML label标签介绍
- Spark从数据库读数据操作
- 关于编译Duilib出现的问题的一个解决办法
- append()方法
- hrbust 1101 Bombs of HRBUST(最小生成树)