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 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦