全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS设计模式之单例模式(一)

命名空间

单例模式是JavaScript中最常见的一种模式,通过这种模式可以为我们提供一个命名空间,例如jQuery库的命名空间为jQuery或$。命名空间的使用是为了让代码更加整洁,在多人协作开发的情况下,不同的人定义的变量很有可能重复,此时就需要使用命名空间来约束每个人定义的变量,使相同名称的变量放在不同的命名空间中,避免相互干扰。例如:

// A程序员的命名空间
var A = {
  get: function(id){
    return document.getElementById(id);
  }
  css: function(id,key,value){
    get(id).style[key] = value;
  }
}
// B程序员的命名空间
var B = {
  get: function(className){
    return document.getElementByClassName(className)[0];
  }
  css: function(className,key,value){
    get(className).style[key] = value;
  }
}

A、B两个命名空间中都有一个get方法和一个css方法,用于元素获取和元素样式修改,不同的是A是通过id来获取元素,而B是通过class来获取元素,通过命名空间,可以使这些相同名称的方法共存,使用时指定相应的命名空间即可。

模块化

JavaScript中单例模式除了定义命名空间之外,还可用于管理代码库的各个功能模块。例如:

google.dom.addClass       // 添加元素类
google.dom.append        // 插入元素
google.event.stopPropagation  // 阻止事件冒泡
google.event.preventDefault   // 阻止默认行为
google.string.trim       // 去除字符串首尾空格
google.string.encodeHTML    // 将字符串进行HTML编码

以上各个模块都位于google命名空间下,每个模块都有属于自己的方法,使用时只需按照需求调用特定功能模块下对应的方法即可。

常量

JavaScript中并没有final、static这类关键字用来定义常量,但JavaScript非常灵活,通过常量只能访问不能修改这一特点,我们可以将变量保存在函数内部,并且只提供获取变量的方法,不提供设置变量的方法,通过闭包的方式使函数执行一次并返回相应的访问方法对象,最后将这个对象放在全局空间中作为常量单例对象使用。例如:

var Color = (function(){
  // 私有变量
  var color = {
    'RED': '#ff0000',
    'YELLOW': '#ffff00',
    'BLUE': '#0000ff'
  }
  // 返回访问方法对象
  return {
    // 常量获取方法
    get: function(name){
      return color[name] ? color[name] : null;
    }
  }
})();

var color = Color.get('BLUE');
console.log(color);  // #0000ff

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JS  # 设计模式  # 单例模式  # JavaScript中的设计模式 单例模式  # JavaScript设计模式---单例模式详解【四种基本形式】  # JS 设计模式之:单例模式定义与实现方法浅析  # javascript设计模式 – 单例模式原理与应用实例分析  # js设计模式之单例模式原理与用法详解  # JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能  # JavaScript设计模式之单例模式  # 放在  # 自己的  # 的人  # 的是  # 这一  # 都有  # 每个人  # 只需  # 我们可以  # 这类  # 时就  # 还可  # 后将  # 提供一个  # 只提供  # 中都  # 很有可能  # 最常见  # 大家多多  # 有一个 


相关文章: 企业微网站怎么做,公司网站和公众号有什么区别?  家庭建站与云服务器建站,如何选择更优?  想学网站制作怎么学,建立一个网站要花费多少?  山东网站制作公司有哪些,山东大源集团官网?  如何在建站主机中优化服务器配置?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何在建站之星绑定自定义域名?  宝塔Windows建站如何避免显示默认IIS页面?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  南平网站制作公司,2025年南平市事业单位报名时间?  宁波免费建站如何选择可靠模板与平台?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  焦点电影公司作品,电影焦点结局是什么?  如何在IIS中新建站点并配置端口与IP地址?  如何注册花生壳免费域名并搭建个人网站?  公众号网站制作网页,微信公众号怎么制作?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  深圳网站制作案例,网页的相关名词有哪些?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  C++中引用和指针有什么区别?(代码说明)  ,交易猫的商品怎么发布到网站上去?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星logo尺寸如何设置最合适?  建站之星代理如何优化在线客服效率?  常州企业建站如何选择最佳模板?  股票网站制作软件,网上股票怎么开户?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  寿县云建站:智能SEO优化与多行业模板快速上线指南  移民网站制作流程,怎么看加拿大移民官网?  如何使用Golang安装API文档生成工具_快速生成接口文档  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  建站之星多图banner生成与模板自定义指南  Python多线程使用规范_线程安全解析【教程】  如何选择高效可靠的多用户建站源码资源?  建站之星官网登录失败?如何快速解决?  如何用狗爹虚拟主机快速搭建网站?  高防服务器租用如何选择配置与防御等级?  广东企业建站网站优化与SEO营销核心策略指南  如何高效利用亚马逊云主机搭建企业网站?  广州建站公司哪家好?十大优质服务商推荐  建站之星如何通过成品分离优化网站效率?  Python如何创建带属性的XML节点  宝塔面板如何快速创建新站点?  如何正确下载安装西数主机建站助手? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。