位置: 编程技术 - 正文

学习JavaScript设计模式(单例模式)(javascript怎么学)

编辑:rootadmin

推荐整理分享学习JavaScript设计模式(单例模式)(javascript怎么学),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript简明教程,javascript教程 csdn,javascript如何学,javascript简明教程,javascript程序设计教程,javascript教程chm,javascript教程chm,javascript教程 csdn,内容如对您有帮助,希望把文章链接给更多的朋友!

单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏览器的window对象。在js开发中,单例模式的用途同样非常广泛。试想一下,当我们单击登录按钮的时候,页面中会出现一个登录框,而这个浮窗是唯一的,无论单击多少次登录按钮,这个浮窗只会被创建一次。因此这个登录浮窗就适合用单例模式。

1、单例模式的使用场景

在使用一种模式之前,我们最好要知道,这种模式的使用场景。用了这么久的单例模式,竟全然不知!用它具体有哪些好处呢?

1).可以用它来划分命名空间(这个就是就是经常用的了)

2).利用分支技术来封装浏览器之间的差异(这个还真没用过,挺新鲜)

3).借助单例模式,可以把代码组织的更为一致,方便阅读与维护(这个也用过了)

2、最基本的单例模式

最简单的单例其实就是一个对象字面量。它把一批有一定关联的方法和属性组织在一起。

这个对象可以被修改。你可以添加属性和方法。你也可以用delete运算符删除现有成员。这实际上违背了面向对象设计的一条原则:类可以被扩展,但不应该被修改。如果某些变量需要保护,那么可以将其定义在闭包中。

对象字面量只是创建单例的方法之一。也并非所有的对象字面量都是单例,那些只是用来模仿关联数组或容纳数据的对象字面量显然不是单例。

3、借用闭包创建单例

闭包主要的目地 保护数据

这种单例模式又称模块模式,指的是它可以把一批相关的方法和属性组织为模块并起到划分命名空间的作用。

4、单例模式用于划分命名空间

1)、防止全局声明的修改

这样以来,即使我们在外面声明了相同的变量,也能在一定程度上防止attr1的被修改。

2)、防止其它来源代码的修改

学习JavaScript设计模式(单例模式)(javascript怎么学)

现在网页上的JavaScript代码往往不止用一个来源,什么库代码、广告代码和徽章代码。为了避免与自己代码的冲突,可以定义一个包含自己所有代码的对象。

3)、用作专用代码封装

在拥有许多网页的网站中,有些代码是所有网页都要用到的,他们通常被存放在独立的文件中;而有些代码则是某个网页专用的,不会被用到其他地方。最好把这两种代码分别包装在自己的单例对象中。

我们经常要用Javascript为表单添加功能。出于平稳退化方面的考虑,通常先创建一个不依赖于Javascript的、使用普通提交机制完成任务的纯HTML网页。

5、惰性单例

前面所讲的单例模式又一个共同点:单例对象都是在脚本加载时被创建出来。对于资源密集的或配置开销甚大的单例,更合理的做法是将其实例化推迟到需要使用他的时候。

这种技术就是惰性加载(lazy loading)。

实现步骤如下:

1).将所有代码移到constructor方法中

2).全权控制调用时机(正是getInstance所要做的)

6、分支技术

分支是一种用来把浏览器间的差异封装在运行期间进行设置的动态方法中的技术。

比如说,如果网站中要频繁使用xhr,每次调用都要再次运行浏览器嗅探代码,这样会严重缺乏效率。更有效的做法是在脚本加载时一次性地确定针对浏览器的代码。这正是分支技术所做的事情。当然,分支技术并不总是更高效的选择,在两个或者多个分支中只有一个分支被用到了,其他分支就占用了内存。

在考虑是否使用分支技术的时候,必须在缩短时间和占用更多内存这一利一弊之间权衡一下。

下面利用分支技术实现XHR:

7、单例模式的弊端

了解了这么多关于单例的知识,我们再来看看它的弊端。

由于单例模式提供的是一种单点访问,所以它有可能导致模块间的强耦合。因此也就不利于单元测试了。

综上,单例还是留给定义命名空间和实现分支型方法这些用途。

通过七点不同方面对单例模式的介绍,大家是不是对单例模式有了更深入的了解,希望这篇文章可以帮到大家。

js实现iframe框架取值的方法(兼容IE,firefox,chrome等) 本文实例讲述了js实现iframe框架取值的方法。分享给大家供大家参考,具体如下:为啥世上会有这么多不同的浏览器?每次遇到js/css的浏览器兼容性问题

深入浅析同源策略和跨域访问 1.什么是同源策略理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。何谓同源:URL由协议、域名、端口

学习JavaScript设计模式(策略模式) 何为策略?比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路。1、策略模式的定义如果没有时间但是不在乎钱,可以选择坐飞机

标签: javascript怎么学

本文链接地址:https://www.jiuchutong.com/biancheng/386292.html 转载请保留说明!

上一篇:javascript bom是什么及bom和dom的区别(js中bom是什么意思)

下一篇:js实现iframe框架取值的方法(兼容IE,firefox,chrome等)(js的iframe)

  • 什么是存货周转率?存货周转率的意义是什么
  • 外籍人员个人所得税政策2022
  • 由商场代收营业费怎么算
  • 有没有退股一说
  • 幼儿园属于小型幼儿吗
  • 劳务派遣人员工作单位怎么写
  • 申报表季初资产和季末资产
  • 冲减以前年度主营业务成本对今年有影响吗
  • 房地产企业开发产品转固定资产
  • 公司买车可以抵扣哪些税
  • 在企业所得税中增值税可以扣除吗
  • 增值税普通发票怎么开
  • 仓库产品出库到货时间
  • 无形资产摊销是增加还是减少
  • 投资收益会计处理
  • 收到餐饮费发票会计分录
  • 企业所得税汇算交所得税如何做账务处理
  • 董事会会费计入哪里
  • 对于甲供工程,施工方销售额不包括建设方提供的材料款。那么该销售额是否包括设备及动力款?
  • 提供鉴证咨询服务属于增值税征税范围吗
  • 无法偿还的借款怎么处理
  • 其他货币资金明细科目有哪些
  • 固定资产达到使用状态时发生的安装费用
  • win7系统怎么进
  • 东芝t351笔记本
  • 五险一金个人缴纳部分
  • 物流公司支付运费怎么做账
  • 最终控制方合并报表账面价值
  • 办公家具折旧年限及计算方法
  • wordpress 设置
  • nvcpl.dll是什么
  • 对公帐户定期存款利率
  • 高薪技术企业的有效期是几年
  • 如何获取openai api
  • hp是什么软件
  • 在建工程盘盈计入什么
  • 用vue做的登录界面
  • yolov3模型训练
  • vue笔记项目
  • 在项目进行过程中,一个开发人员
  • css中清除浮动
  • Node 下 Http Streaming 的跨浏览器实现
  • 企业产值用什么符号表示
  • 纳税人识别号的英文缩写
  • 管家婆软件出库入库如何用
  • js 自定义类型
  • python动态参数应用
  • 现金流量表中的现金流量包括哪些
  • 期末进行存货清查
  • 公司销售不动产增值税
  • 给供应商支付货款的付款申请由谁提出
  • 员工餐费标准怎么算
  • 库存商品如何结转生产成本
  • 场地租赁费属于劳务还是服务
  • 房地产开发打桩
  • 公司购轿车会计分录怎么做
  • 收到费用报销单怎么做记账凭证
  • 生产成本和主营业务成本金额一样吗
  • 红字发票怎样记账
  • jdbc连接MySQL实验总结
  • sql参数化还是被注入了
  • freebsd与linux
  • win7开始菜单在哪个文件夹
  • mac登录apple id一直转圈
  • centos 安装rpm软件包的命令
  • url是什么文件怎么打开
  • kmswin7激活步骤
  • Unity3D游戏开发pdf
  • url跟uri
  • 跨浏览器跨终端的前端开发
  • shell脚本编写 方法
  • iframe嵌套页面滚动事件
  • jquery操作html代码
  • python框架flask系列
  • 电脑上怎么登录个人网络
  • 没盖发票专用章可以补盖吗
  • 浙江增值税发票勾选认证流程
  • 小孩一卡通丢了去哪里补办,需要什么证件
  • 教师资格证认定流程
  • 营业税纳税申报时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设