模块(Module)模式

模块 (module) 模式

Module 模式最初被定义为一种在传统软件工程中为类提供私有和共有的封装方法。

javascript 中,Module模式用于进一步模拟类的概念,通过这种方式,能够使一个单独的对象拥有 共有 / 私有方法和变量,从而屏蔽来自全局作用域的特殊部分。产生的结果是:函数名与页面上其他脚本定义的函数冲突的可能性降低。

  • Module 模式的实现
  var Car = (function () {
    // 定义私有变量
    var type = '小汽车';
    // 定义私有函数
    var year = function () {
      return '2017'
    };
    // 返回一个暴露出的共有对象
    return {
      color: 'red',  // 共有变量
      money: function (num) {  // 共有函数
        console.log('这是辆' + this.color + '的' + type + ', 需要' + num + '人民币')
      }
    }
  })();
  // 调用
  console.log(Car.color); // red
  Car.money(20000);    // 这是辆red的小汽车, 需要20000人民币
  Car.color = 'blue';  // 修改公有变量
  console.log(Car.color); // blue
  Car.money(15000);    // 这是辆blue的小汽车, 需要15000人民币

在上面代码中,我们定义了一个Car来模拟一个类, Car中定义一个私有变量 type 和一个私有方法 year,这两个私有成员在 Car 的外部是访问不到的,只能在这个函数内部被访问;通过 return 一个对象,将公有的变量 color 和共有的函数 money 暴露在函数外面,能够让外部修改和访问。

Module 模式的优点:

  • 只有我们的模块才能享有拥有私有函数的自由。因为他们不会暴露于页面的其余部分(只会暴露我们输出的 API),我们认为它们是真正私有的。
  • 鉴于函数往往已申明并命名,在试图找到有哪些函数抛出异常时,这将使得在调试器中显示调用堆栈变得更容易。

Module 模式的缺点:

  • 由于我们访问共有和私有成员的方式不同,当我们想改变可见性时,实际我们必须要修改每一个曾经使用过该成员的地方。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,288评论 25 708
  • 第一天 一.内联函数(inline) 函数调用的时候需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作...
    陈果123阅读 1,145评论 0 1
  • ## 前言 The Module Pattern,模块模式,也译为模组模式,是一种通用的对代码进行模块化组织与定义...
    b2e16cc43137阅读 3,085评论 1 4
  • 一、数组 1、数组定义 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西。 $...
    空谷悠阅读 814评论 4 11
  • 今天和爸爸在微信群里吵架了,今天和媳妇讨论了,以后我不同意的观点我不回应了。
    t7ink阅读 185评论 0 0