js 模块编程

引用博客
http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

**为什么使用模块

因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。

1.原始写法

只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。

  function m1(){
    //...
  }
  function m2(){
    //...
  }

2.对象写法

把模块写成一个对象,所有的模块成员都放到这个对象里面

var module1 = new Object({
    _count : 0,
    m1 : function (){
      //...
    },
    m2 : function (){
      //...
    }
  });

或者

var module1 = {
      count:3,
      init:function( num ){
          ....(code)
      },
     run:function(){
        <code>
     }
}

调用方法
mode1.init(num);

缺点

可以在外部改写对象状态,即修改count的值。修改方法:

modle1.count = 5;

3.立即执行函数方式

达到不暴露私有成员的目的。

 var module1 = (function(){
    var _count = 0;
    var m1 = function(param){
      //...
    };
    var m2 = function(){
      //...
    };
    return {
      m1 : m1,
      m2 : m2
    };
  })();

调用方法:

modle1.m1(param);

直接调用

console.log(modle1._count)//undefined 不能再外部改变

对于立即执行函数的理解

4.放大模式

如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用"放大模式"(augmentation)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容