亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Javascript中的Module(模塊)模式

標簽:
JavaScript

JavaScript模块是用于保持代码块之间相互独立而普遍使用的设计模式。对于熟悉面向对象语言的人来说,模块是JavaScript的"类"。在JavaScript中Module模式模拟了类的概念,用闭包封装了"私有"状态和方法。

我们用立即执行函数(Immediately-Invoked-Function-Expressions (IIFE)) 创建私有空间,防止其泄露全局作用域。其样子如下:

var myGirlfriend = (function() {  // 定义私有变量或方法
  var name = '小郑';  var _kiss = function() {    console.log('吻');
  }  var _smile = function() {    console.log('微笑');
  }  return {    // 暴露给公有的变量或方法
    simle: _smile,    name: name
  }

})();console.log(myGirlfriend.name); 
myGirlfriend.simle();console.log(myGirlfriend._simle);console.log(myGirlfriend._kiss);/**
 * 结果:
 *     小美
 *     微笑
 *     undefined
 *     undefined
*/

在Module模式内,由于闭包的存在,声明的变量和方法只在模式内部可用,但在返回的对象上定义的变量和方法,在对外部也可用。如上面例子:其他人可以知道我的女朋友的名字,也可以看到我女朋友微笑,但不可以吻我女朋友。

Module模式的优缺点:

优点:

  • 实现代码的封装模块化

  • 实现私有化变量和方法

缺点:

  • 无法应用私有变量,造成无法对私有变量进行单元测试

  • 当我们想改可见性时,实际上要修改每一个曾经使用过该成员的地方。

这里只举例了一种简单Module的设计模式,从Module模式上还衍生出Revealing Module(揭示模块)模式、Singleton(单例)模式。这些模式都很有使用价值,不同当我们的系统中出现了它们,则表示我们能需要评估我们的设计,例如Singleton的存在往往表明系统中的模块要么是系统紧密耦合,要么是其逻辑过于分散在代码库的多个部分中。



作者:内孤
链接:https://www.jianshu.com/p/03c5b939e5d4


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消