JavaScript学习之单体模式

来源:互联网 发布:红楼梦鉴赏知乎 编辑:程序博客网 时间:2024/05/16 18:23

单体模式是JavaScript中最常见的设计模式,它将代码块划分到不同的逻辑单元中,分开在不同的命名空间中,以防止调用方法冲突,单体模式只有一个实例。

简单单体

// 简单单体var Singleton = {name:'fxy',age:'10',getName:function(){return this.name;},getAge:function(){return this.age;}}alert(Singleton.getName())var FXY = {};FXY.Singleton = {name: true , age: 10 ,getName : function(){alert('fxy');},getAge : function(){alert('my age 3');}};FXY.Singleton.getName();
//闭包单体  保护数据FXY = {}FXY.Singleton = (function(){var name = 'fff';var age = 10;var getName = function(){return this.name;};var getAge = function(){return this.age;};return {name:name,age:age,getName:getName,getAge:getAge}})();alert(FXY.Singleton.name);alert(FXY.Singleton.getName());

//<span style="font-family: Arial, Helvetica, sans-serif;"><span>惰性单体</span></span>
<span style="white-space:pre"></span>FXY = {}FXY.Singleton = (function(){var lazy = undefined;function init(){var name = 'fff';var age = 10;var getName = function(){return this.name;};var getAge = function(){return this.age;};return {name:name,age:age,getName:getName,getAge:getAge}}return {getInstant:function(){if(!lazy){lazy = init();}return lazy;}}})();alert(FXY.Singleton);//singleton 对象,中包含getInstantalert(FXY.Singleton.getInstant().getName());//需要时初始化对象,调用其中方法

// 分支单体 (判断程序的分支 <浏览器差异的检测>)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);

以上参考尚学堂bhx老师的视频编写

0 0
原创粉丝点击