Javascript 设计模式 -- Module(模块)模式

  • 1 . 公有方法改变私有变量 :
    • Module 模式使用闭包封装”私有” 状态和组织.它提供了一中包装混合公有/私有方法和变量的方式,防止其泄露到全局作用域,防止与别的开发人员的接口发生冲突,通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里.我们来看一段代码:
var testModule = (function () {
    var count = 0; // 私有变量
    return { // 返回一个对象
        incrementCount: function () { // 公有方法
            return ++count;
        },
        reserCount: function () { // 公有方法
            console.log ( "重置前 count 的值为 : " + count ); // 输出内容为 :  重置前 count 的值为 : 1
            count = 0;
        }
    };
})();

testModule.incrementCount ();   // 公有 API 调用, 执行 ++count;
testModule.reserCount ();   // 公有 API 调用, 执行 count = 0;
  • 通过以上的代码可以看出,要修改count的值,除了上述两个公有方法外,别无他法.这就是模块化的好处,count 变量是完全与全局作用域隔离的,因此他表现的就像是一个似有变量,既不会污染全局变量,又不会与其他的变量冲突.
  • 2 . 调用私有变量和方法的公有函数
var myNameSpace = (function () {
    var myPrivateVar = 0;
    var myPrivateMethod = function ( params ) {
        console.log ( params );     // 公有方法(myPublicMethod)调用私有方法(myPrivateMethod);执行公有方法,改变后的私有变量值为 1
    };
    return {
        myPublicVar: 'params',
        myPublicMethod: function ( bar ) {
            myPrivateVar++;
            myPrivateMethod ( '公有方法(myPublicMethod)调用私有方法(myPrivateMethod);' + bar + ', 累加后的私有变量值为 ' + myPrivateVar );
        }
    };
}) ();
myNameSpace.myPublicMethod ( '执行公有方法' ); // 公有方法(myPublicMethod)调用私有方法(myPrivateMethod);执行公有方法, 累加后的私有变量值为 1
console.log ( '公有变量(myNameSpace.myPublicVar)为 : ' + myNameSpace.myPublicVar ); //公有变量(myNameSpace.myPublicVar)为 : params
console.log ('访问私有变量结果为 : ' + myNameSpace.myPrivateVar ); // 访问私有变量结果为 : undefined
  • 通过上面的例子,应该对私有变量、公有变量和公有变量调用似有变量和私有属性有所了解了吧.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值