引入外部css文件的方式 js移除div里面内容


引入外部css文件的方式 js移除div里面内容

文章插图
定义
确保一个类仅有一个实例,并提供一个访问它的全局访问点 。
特点:
可以来划分命名空间,从而清除全局变量所带来的风险 。可以把代码组织的更为一体,便于阅读和维护 。可以被实例化,且实例化一次 。单例模式使用的场景
比如线程池、全局缓存等 。我们所熟知的浏览器的window对象就是一个单例,在JavaScript开发中,对于这种只需要一个的对象,我们的实现往往使用单例 。
实现单例模式 (不透明的)
一般我们是这样实现单例的,用一个变量来标志当前的类已经创建过对象,如果下次获取当前类的实例时,直接返回之前创建的对象即可 。代码如下:
我们也可以使用闭包来实现:
这个单例实现获取对象的方式经常见于新手的写法,这种方式获取对象虽然简单,但是这种实现方式不透明 。知道的人可以通过 Singleton.getInstance() 获取对象,不知道的需要研究代码的实现,这样不好 。这与我们常见的用 new 关键字来获取对象有出入,实际意义不大 。
实现单例模式 (透明的)
这种单例模式我以前用过一次,但是使用起来很别扭,我也见过别人用这种方式实现过走马灯的效果,因为走马灯在我们的应用中绝大多数只有一个 。
这里先说一下为什么感觉不对劲,因为在这个单例的构造函数中一共干了两件事,一个是创建对象并打印实例名字,另一个是保证只有一个实例对象 。这样代码量大的化不方便管理,应该尽量做到职责单一 。
我们通常会将代码改成下面这个样子:
这种实现方式我们就比较熟悉了,我们在开发中经常会使用中间类,通过它来实现原类所不具有的特殊功能 。有的人把这种实现方式叫做代理,这的确是单例模式的一种应用,稍后将在代理模式进行详解 。
说了这么多我们还是在围绕着传统的单例模式实现在进行讲解,那么具有JavaScript特色的单例模式是什么呢 。
JavaScript单例模式
在我们的开发中,很多同学可能并不知道单例到底是什么,应该如何使用单例,但是他们所写的代码却刚好满足了单例模式的要求 。如要实现一个登陆弹窗,不管那个页面或者在页面的那个地方单击登陆按钮,都会弹出登录窗 。一些同学就会写一个全局的对象来实现登陆窗口功能,是的,这样的确可以实现所要求的登陆效果,也符合单例模式的要求,但是这种实现其实是一个巧合,或者一个美丽的错误 。由于全局对象,或者说全局变量正好符合单例的能够全局访问,而且是唯一的 。但是我们都知道,全局变量是可以被覆盖的,特别是对于初级开发人员来说,刚开始不管定义什么基本都是全局的,这样的好处是方便访问,坏处是一不留意就会引起冲突,特别是在做一个团队合作的大项目时,所以成熟的有经验的开发人员尽量减少全局的声明 。
而在开发中我们避免全局变量污染的通常做法如下:
全局命名空间使用闭包它们的共同点是都可以定义自己的成员、存储数据 。区别是全局命名空间的所有方法和属性都是公共的,而闭包可以实现方法和属性的私有化 。
惰性单例模式
说实话,在我下决心学习设计模式之前我并不知道,单例模式还分惰性单例模式,直到我看了曾探大神的《JvaScript设计模式与开发实践》后才知道了还有惰性单例模式,那么什么是惰性单例模式呢?在说惰性单例模式之前,请允许我先说一个我们都知道的lazyload加载图片,它就是惰性加载,只当含有图片资源的dom元素出现在媒体设备的可视区时,图片资源才会被加载,这种加载模式就是惰性加载;还有就是下拉刷新资源也是惰性加载,当你触发下拉刷新事件资源才会被加载等 。而惰性单例模式的原理也是这样的,只有当触发创建实例对象时,实例对象才会被创建 。这样的实例对象创建方式在开发中很有必要的 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: