JS设想形式之Module(模块)形式、Revealing Module(展现模块)形式

Module(模块)形式

观点

Module形式最初被定义为一种在传统软件工程中为类供应私有和共有封装的要领。

经由过程这类体式格局,可以使一个零丁的对象具有共有/私有要领和变量,从而屏障来自全局作用局的特别部份。
发生的结果是: 函数名与在页面上其他剧本定义的函数争执的可能性降级

运用

完成一个简朴的计数器

orderModule外的代码没法直接读取getNum(),addNum()和subNum(),orderNum变量实际上是与全局作用域断绝的,因而它表现的就像是一个四有变量,他的存在被局限于模块的闭包内,因而唯一能接见其作用域的代码就是这三个函数。

如许完成同时也举行了有用的定名空间设置。

var orderModule = (function() {
    var orderNum = 1;

    return {
        getNum: function() {
            return orderNum;
        },
        addNum: function() {
            orderNum = orderNum + 1;
        },
        subNum: function() {
            orderNum = orderNum > 1 ? orderNum - 1 : orderNum;
        }
    }
})();

orderModule.getNum();

Revealing Module(展现模块)形式

观点

展现模块形式是在模块形式的基础上举行革新,在私有范围内简朴定义一切的函数和变量,并返回一个匿名对象,它具有指向私有函数的指针,该函数是展现为共有的要领。

运用

var orderModule = (function() {
    var orderNum = 1;
    
    function getNum() {
        return orderNum;
    }
    
    function addNum() {
       orderNum = orderNum + 1;
    }
    
    function subNum() {
        orderNum = orderNum > 1 ? orderNum - 1 : orderNum;
    }

    //将暴露的公有指针指向到私有函数和属性上
    return {
        get: getNum,
        add: addNum,
        sub: subNum
    }
})();

orderModule.get();

参考

《JavaScript设想形式》

JS设想形式系列文章

JS设想形式之Factory(工场)形式
JS设想形式之Singleton(单例)形式
JS设想形式之Facade(表面)形式
JS设想形式之Module(模块)形式、Revealing Module(展现模块)形式

    原文作者:大海怪
    原文地址: https://segmentfault.com/a/1190000017861021
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞