javascript设计模式之模块模式学习笔记

作者:灰太狼-铜豌豆 时间:2024-04-29 13:16:11 

我们通过单体模式理解了是以对象字面量的方式来创建单体模式的;比如如下的对象字面量的方式代码如下:


var singleMode = {
 name: value,
 method: function(){

}
};

模块模式的思路是为单体模式添加私有变量和私有方法能够减少全局变量的使用;如下就是一个模块模式的代码结构:


var singleMode = (function(){
 // 创建私有变量
 var privateNum = 112;
 // 创建私有函数
 function privateFunc(){
   // 实现自己的业务逻辑代码
 }
 // 返回一个对象包含公有方法和属性
 return {
   publicMethod1: publicMethod1,
   publicMethod2: publicMethod1
 };
})();

模块模式使用了一个返回对象的匿名函数。在这个匿名函数内部,先定义了私有变量和函数,供内部函数使用,然后将一个对象字面量作为函数的值返回,返回的对象字面量中只包含可以公开的属性和方法。这样的话,可以提供外部使用该方法;由于该返回对象中的公有方法是在匿名函数内部定义的,因此它可以访问内部的私有变量和函数。

我们什么时候使用模块模式?

如果我们必须创建一个对象并以某些数据进行初始化,同时还要公开一些能够访问这些私有数据的方法,那么我们这个时候就可以使用模块模式了。

理解增强的模块模式

增强的模块模式的使用场合是:适合那些单列必须是某种类型的实例,同时还必须添加某些属性或方法对其加以增强的情况。比如如下代码:


function CustomType() {
 this.name = "tugenhua";
};
CustomType.prototype.getName = function(){
 return this.name;
}
var application = (function(){
 // 定义私有
 var privateA = "aa";
 // 定义私有函数
 function A(){};

// 实例化一个对象后,返回该实例,然后为该实例增加一些公有属性和方法
 var object = new CustomType();

// 添加公有属性
 object.A = "aa";
 // 添加公有方法
 object.B = function(){
   return privateA;
 }
 // 返回该对象
 return object;
})();

下面我们来打印下application该对象;如下:

console.log(application);

javascript设计模式之模块模式学习笔记

继续打印该公有属性和方法如下:


console.log(application.A);// aa
console.log(application.B()); // aa
console.log(application.name); // tugenhua
console.log(application.getName());// tugenhua
标签:js,设计模式,模块模式
0
投稿

猜你喜欢

  • Python实现自动装机功能案例分析

    2022-05-16 12:35:48
  • 手机版远程网站文件删除ASP程序

    2009-02-24 16:23:00
  • python 画条形图(柱状图)实例

    2021-12-06 19:09:26
  • 详解Bootstrap按钮

    2023-07-02 05:24:44
  • 利用Python脚本批量生成SQL语句

    2023-06-10 10:02:37
  • Vue CLI3.0中使用jQuery和Bootstrap的方法

    2023-07-02 17:08:15
  • vue 项目中当访问路由不存在的时候默认访问404页面操作

    2024-04-30 10:41:49
  • 使用numpy.ndarray添加元素

    2022-10-31 06:12:15
  • 自然语言处理之文本热词提取(含有《源码》和《数据》)

    2021-11-26 11:14:58
  • JavaScript对Json的增删改属性详解

    2024-04-18 09:36:27
  • eWebEditor不支持IE8/IE7的解决方法

    2010-02-28 10:27:00
  • 如何实现文本的卷屏浏览?

    2010-05-24 18:36:00
  • golang 实现时间滑动窗口的示例代码

    2024-02-13 18:22:18
  • python 异常的传递性及主动抛出学习

    2021-03-19 05:02:38
  • 自适应浏览器位置的div效果

    2008-05-29 13:15:00
  • ASP实现控制虚拟主机功能的函数ADSI

    2008-10-12 13:12:00
  • Python 正则表达式入门(初级篇)

    2021-12-03 23:41:12
  • python3.5 + PyQt5 +Eric6 实现的一个计算器代码

    2021-02-27 17:00:28
  • PDO::beginTransaction讲解

    2023-06-06 00:57:46
  • python 列表套json字典根据相同的key筛选数据

    2022-06-01 08:52:02
  • asp之家 网络编程 m.aspxhome.com