`
田进丰
  • 浏览: 36116 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Module(模块)模式中的私有

 
阅读更多

Module模式使用闭包封装‘私有’状态和组织。它提供了一种包装混合公有/私有方法和变量的方式 ,防止其泄露至全局作用域。这样为我们提供了一个屏蔽处理底层事件逻辑的整洁解决方案,同时只暴漏一个接口供应用程序的其他部分使用。请看下面这个例子:

var testModule = (function () {
   var count = 0;
    return {
      incremCount:function () {
         return ++count;
      },
       resetCount: function (){
          console.log('count value prior to reset:'+count);
          count = 0;
       }
   };

})();

 

testMoudle.incremCount();

 增加数量;

testMoudle.resetCount();

 输出:1;

上面的代码中incremCount()和reseCount()是无法直接读取的,count变量是完全与全局作用域隔离的,所以它就被当作一个私有变量,而能够访问的作用域的代码是这两个函数。

看下一个例子:

var mySpace = (function () {
   //私有变量
   var myCount = 0;
   //私有函数
   var myPrivate = function (foo) {
         consloe.log(foo);
    };
    return{
      //公有变量
      myPublicCount:'foo',
      //调用私有变量和方法的公有函数
      myPublicFunction:function (bar) {
            //增加计数
             myCount++;
            //传入bar调用私有方法
            myPrivate(bar);
       }
    };
})();

 这是一个包含命名空间,公有和私有变量 的module模式。

 

分享到:
评论

相关推荐

    javascript设计模式之module(模块)模式.docx

    ### JavaScript设计模式之Module(模块)模式 #### 模块的重要性 在现代软件工程中,模块化编程是一种关键的技术手段,它可以显著提高代码的可维护性和可读性。通过将程序划分为独立的功能块(即模块),开发者能够...

    全面解析Module模式

    Module模式是JavaScript编程中一个非常实用的设计模式,主要用于创建可复用的模块。它能够有效地帮助开发者封装变量和函数,减少全局命名空间的污染,提高代码的可维护性和可读性。本篇文章将深入探讨Module模式的...

    全面解析Module模式1

    在实际应用中,Module模式可以进一步扩展,例如,通过模块间的消息传递(事件监听、发布订阅等)来实现模块间的通信,或者通过模块工厂模式来动态创建和配置模块。此外,还可以结合其他设计模式,如单例模式,确保...

    全面解析JavaScript Module模式

    模块模式的关键在于利用匿名函数和闭包来创建私有作用域,从而保护内部变量和函数不被全局空间污染。 ### 基本用法 Module模式的基本实现通常涉及到一个立即执行的匿名函数,通过这个函数创建一个私有作用域。在...

    27 模块模式.pdf

    3. **揭示模块模式(Reveal Module Pattern)**: 这是模块模式的一个变体,它允许将部分私有成员暴露为公共接口。通过返回一个包含选定私有成员的对象,我们可以控制哪些成员可以被外部访问。例如: ```...

    golang整合mod(跨module引用)

    默认情况下,当项目位于GOPATH之外时,Go会自动启用模块模式。 5. **调试与检查** - **go mod graph**:运行`go mod graph`命令,可以查看模块间的依赖关系图。 - **go mod why**:通过`go mod why`,可以查询...

    javascript设计模式之module(模块)模式

    例如,上述代码中的`testModule`模块就成功地将`counter`变量封装成了私有状态,外部代码无法直接访问它,只能通过模块提供的公有方法`incrementCounter`和`resetCounter`来操作它。 此外,文章提到了JavaScript中...

    私有化部署版本提供多种授权模式.jpg

    数蚁针对私有化部署版本提供多种授权模式,分为试用授权许可证(Trial License) ,模块许可证 (Module License) 以及基础云平台许可证(Base License) 试用授权许可证(Trial License) 提供数蚁平 台的所有功能,包括...

    浅谈Node模块系统及其模式

    在Node.js的模块系统中,每个模块都有自己的作用域,其中包含对外部可见的API(`module.exports`)和私有变量。`module`对象包含了模块的所有信息,包括它的`exports`属性,这是模块对外暴露接口的地方。例如: ```...

    深入理解JavaScript中的块级作用域、私有变量与模块模式

    JavaScript中的块级作用域、私有变量和模块模式是编程中至关重要的概念,尤其是在JavaScript这种动态类型的编程语言中。理解这些概念有助于编写更安全、更易于维护的代码。 1. **块级作用域**: 在JavaScript中,...

    JavaScript前端开发模块化教程_源代码.rar

    - **模块模式**:包括简单的模块模式、私有变量模式、寄生组合式模块等。 - **类和继承**:ES6的`class`和`extends`关键字也可以用于模块化,创建可复用的组件。 5. **源代码分析** - 学习者可以通过分析和运行...

    module-alias:在Node中注册目录和自定义模块路径的别名

    模块别名 创建目录别名,并像老板一样在NodeJS中注册自定义模块路径! ... 它还允许您注册目录,这些目录的行为与node_modules但具有您自己的私有模块,因此您可以直接访问它们: require ( 'my_

    深入理解JavaScript系列(3) 全面解析Module模式

    首先我们来看看Module模式的基本特征: 模块化,可重用 封装了变量和function,和全局的namaspace不接触,松耦合 只暴露可用public的方法,其它私有方法全部隐藏 关于Module模式,最早是由YUI的成员Eric Miraglia在...

    JavaScript的Module模式编程深入分析

    JavaScript的Module模式是一种组织代码的方式,它通过使用匿名函数和闭包来实现模块化,从而保护内部变量和函数不被外部直接访问。该模式最早由YUI团队的Eric Miraglia在2007年的博客中提出。在本文中,我们将深入...

    前端项目-simple-module.zip

    结合描述中的"JavaScript模块的基类",我们可以推测"simple-module-master"可能包含一个基础模块类,用于创建自定义模块。这个基类可能提供了一些基本的模块管理功能,如初始化、依赖注入、事件处理等,开发者可以...

    JavaScript模块化编程

    4. **放大模式**:用于扩展已有的模块,向模块中添加新的方法或特性。 ```javascript var module = (function (mod) { mod.m3 = function () { // ... }; return mod; })(module); ``` 5. **宽放大模式**...

    JavaScript模块模式实例详解

    JavaScript模块模式是一种设计模式,用于在JavaScript中创建私有作用域和公共接口,以实现封装和组织代码。它利用JavaScript的闭包特性,允许我们在一个函数内部创建私有变量和函数,同时通过返回的对象暴露公共接口...

    深入Go Module.pdf

    Go Module的未来特性可能会继续优化版本选择策略、提高模块加载速度,以及增强对私有模块的支持和安全性。随着Go语言的发展,Go Module将进一步提升开发者在依赖管理和版本控制上的体验,降低维护复杂性的成本,从而...

    关于JS模块化的知识点分享

    在JavaScript中,Module模式使用匿名函数自调用 (闭包)来封装,通过自定义暴露行为来区分私有成员和公有成员。 let myModule = (function (window) { let moduleName = 'module' // private // public function ...

Global site tag (gtag.js) - Google Analytics