浅谈javascript单体【读javascript设计模式第五章节单体有感】

单体,整个运行环境就独有一份,最简单的一种单体就是一个把所有属性和方法都集中在一起的对象,区别于一般的字面量对象,一般字面量对象是对一个物体的描述,集合该物体所具有的一些属性和方法,而单体则包含更多的些逻辑在里面,单体的好处有,划分命名空间,如果用来作为网页包装器,可以使得页面所有变量都封装在一个对象里,大幅度减小网页里的全局变量,

代码如:

common.js

(function(wz){

  $.extend({

    init:function(){

      var self = this;

      this.bind();

      if($.isFunction(self.inside)){

        self.inside();

      }

    }  

  })

})(wz || {});

aboutUs.js

wz.aboutUs = {

  init:function(){

  },

  bind:function(){    

  };

}

wz.inside = function(){

  wz.aboutUs.init();

}

上面的方式弊端就是任何属性和方法都可以通过“.”去获取和修改,单体也可以通过闭包去进行封装,只对外显示出具体的api接口,如:

var test = (function(){

  var method1 = function(){};

  var method2 = function(){};

  return {

    method:function(){

      method1.......

      method2.......

    }

  }

})()

另外书上也有讲到惰性实例化,即推迟单体生成,如

var test = (function(){

  var instance;

  var construt = function(){

    var method1 = function(){};

    var method2 = function(){};

    return {

      method:function(){

        method1.......

        method2.......

      }

    }

  }

  return {

    getInstance:function(){

      if(!instance){

        instance = construt();

      }

      return instance;

    }

  }

});

结合上面单体的一些功能,可以将其用在分支上,如:用分支技术创建XHR对象,代码就不敲了,

总结:

单例用处很广,可以优化命名空间,增强模块性 ,节约内存,通过使用分支,可以避免每次构造时候重复执行相同的判断,弊端会导致模块间的强耦合,

浅谈javascript单体【读javascript设计模式第五章节单体有感】

时间: 2024-10-21 07:39:08

浅谈javascript单体【读javascript设计模式第五章节单体有感】的相关文章

浅谈javascript继承【读javascript设计模式第四章节继承有感】

javascript继承,无任是类式继承,原型式继承还是渗元式继承都是通过不同方法去围绕着prototype转,简单分析下三种不同继承方法是如何围绕prototype转的 一:类似继承,先上关键代码 function extend(subClass,supClass){ var fn = function(){}; fn.prototype = supClass.prototype; subClass.prototype = new fn(); subClass.prototype.constr

浅谈href=#与href=javascript:void(0)的区别

#"包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0)  仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首 而javascript:void(0) 则不是如此 所以调用脚本的时候最好用void(0) 或者<input onclick> <div onclick>等 打开新窗口链接的几种办法 1.window.open('url') 2.用自定义函数 <script>       

浅谈Supermap iClient for JavaScript 弹窗类

地图作为信息的载体和呈现方式,是GIS的重要组成部分,它是一个浏览信息的窗口,在信息日益发达的今天 ,各种地图应用如雨后春笋一般出现在大众眼前,而不是像以往一样太过局限于专业的领域.而弹窗,是作为地图信息的补充说明和描述的重要呈现方式,也广泛应用于各种地图应用中.一个好的前端界面的设计要灵活地使用空间,也要生动地完成与用户的交互,而在地图应用中,弹窗使用得好,不但会让人感觉舒适也会方便和增加与用户的交互,提升用户体验.如何使用和如何更好地使用iClient for JavaScript的弹窗(P

浅谈JS之text/javascript和application/javascript

问题描述: JS在IE8以下浏览器运行异常 代码: <script>标签是这样子写的: <script type="application/javascript"> //执行语句 </script> 这是书写的时候Dreamweaver自动补全的.但是在自己运行的例子中我的script标签写的是: <script type="text/javascript"> //执行语句 </script> 将项目中的标

浅谈HDFS的读流程

1.使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求: 2.Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址: 3.客户端Client会选取离客户端最近的DataNode来读取block:如果客户端本身就是DataNode,那么将从本地直接获取数据: 4.读取完当前block的数据后,关闭当前的DataNode链接,并为读取下一个block寻找最佳的DataNode: 5

浅谈源码的七大设计模式

本文会介绍一些经典的设计模式思想: 常用设计模式 Proxy代理模式 代理模式:为其他对象提供一种代理以便控制对这个对象的访问. 可以详细控制访问某个类(对象)的方法,在调用这个方法前作的前置处理(统一的流程代码放到代理中处理).调用这个方法后做后置处理. 代理模式分类: 1.静态代理(静态定义代理类,我们自己静态定义的代理类.比如我们自己定义一个明星的经纪人类) 2.动态代理(通过程序动态生成代理类,该代理类不是我们自己定义的.而是由程序自动生成)比较重要!! JDK自带的动态代理 javaa

浅谈小白如何读懂Redis高速缓存与持久化并存及主从高可用集群

一.简介 Redis是一个基于键值(K-V)的高速缓存软件,和他具有相同功能的软件有memcached,但其支持更为复杂的数据结构,例如:List,set,sorted set,同时redis具有持久性功能.redis究竟是什么?对于不同的应用场合,对redis的理解也不相同,如下有三种不同的理解. ①key value store(键值存储),是一个以键值形式存储的数据库,用来作为唯一的存储系统,同时借助于sentinel实现一定意义上的高可用. ②memory cached(内存缓存),是一

浅谈数据结构题的几个非经典解法【有感】

主要内容: 二进制分组.整体二分.对时间分组等: 1.整体二分: 首先觉得这个和cdq分治很像,但还是有一些区别的,例如: cdq分治是将[l,mid]的操作来更新[mid+1,r] 整体二分是把询问分为[l,mid]和[mid+1,r]两部分 实际上上面就已经道出了整体二分的本质思想,就是划而问之,还是从几道例题来讲讲整体二分比较好 T1:Pku 2104 K-th Number[http://begin.lydsy.com/JudgeOnline/problem.php?id=2971] 题

浅谈 JavaScript 编程语言的编码规范

对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦.软件存在的长期价值直接与编码的质量成比例.编码规范能帮助我们降低编程中不必要的麻烦.而 JavaScript 代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注. 本文浅谈 JavaScript 编程中关