浅谈JavaScript中单利模式

收藏


首先我们看下边这样一段代码:

        在全局作用域下,当前的作用域当中先进行预解释var student1;var student2;JS当中基本数据类型是按照值来操做的,引用数据类型是按地址来操作的,那么预解释完成之后那,代码依次从上至下来执行,student1 = xxxfff000;student2 = xxxfff111;然后开辟新的内存空间去存储对象当中的属性名与属性值;栈内存当中存储都是变量名,对象名,函数名,而堆内存当中存储的是对象类型的属性名和属性值;函数类型的代码段;并通过内存地址找到新开辟的内存空间,对于这样的一段代码可以简单的这样去分析;

        当我们去调用student1.name;student2.name;的时候这样同样的属性名就不会发生冲突,这也就是引用类型数据存在的必要性,在JS诞生的初期是没有引用数据类型的全部都是基本数据类型;

        这里的话也就明确了引用数据类型当中 对象数据类型的作用 把描述同一个事物(同一个对象)的属性和方法放在同一个内存空间下,起到了分组的作用,这样不同事物之间的属性即使属性名相同,相互也不会发生冲突;

        很多“程序猿”写过不计其数的这样的代码,但是并不知道它的加载过程,更不知道这就是 单利模式; 那么我们把这种分组编写的模式叫做单例模式;既然称之为单利模式,那么在单利模式中student1和student2称之为“命名空间”;

        单利模式在我们项目开发中是一种常用的模式,一般使用单例模式进行模块化开发,尤其在团队开发当中是常用的一种开发方式。比如说

如图我们微信公众平台管理模块和推广模块给团队不同人员去开发:

如图里边都有选项卡切换这个方法的话,那么两个开发人员命名一样了,在代码合并的时候就会发生冲突,出现方法替换等问题;而这样的话就可以用单利模式来解决这个问题;

    这样的话,在大的功能模块之下小的模块即使方法名一样也不会有任何影响;

另外在实际项目当中如果说项目比较大,有一些方法都是重复的可利用的那么就会有共用方法库;

    在各自的作用域下去调用公共方法就可以了;

我们再看下以下的代码,属于tabChange这个方法下调用Extension这个命名空间下的私有方法;那么直接Extension.scrollTop就可以了;

但是如果说我们命名空间的每个名称重复的话,当然按大的模块命名的话命名冲突很少,但是冲突的话,这么调用不光要改Extension而且方法调用的Extension是不是也要改,那么我们的在调用的时候应该:

那么不管我们的Extension怎么改内部的方法调用都不会错,在当前这个命名空间下this代表的就是这Extension,不管Extension怎么去改,改成谁,我们this就带表谁;到这里的话单利模式基本分享的就这么多;在JS当中那单利模式是最简单的一种,还有工厂模式,构造函数模式,原型链模式;它们依次递进的关系;后边的话回去分享其它几种模式;

                                长按识别二维码添加关注



评论(0条)

请登录后评论