• Javascript模块化编程


    一、原始写法

    模块就是实现特定功能的一组方法。

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

    1
    2
    3
    4
    5
    6
    function m1(){
        //...
      }
      function m2(){
        //...
      }

    上面的函数m1()和m2(),组成一个模块。使用的时候,直接调用就行了。

    这种做法的缺点很明显:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。

    二、对象写法

    为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var module1 = new Object({
        _count : 0,
        m1 : function (){
          //...
        },
        m2 : function (){
          //...
        }
      });

    上面的函数m1()和m2(),都封装在module1对象里。使用的时候,就是调用这个对象的属性。

    但是,这样的写法会暴露所有模块成员,内部状态可以被外部改写。比如,外部代码可以直接改变内部计数器的值。

    三、立即执行函数写法

    使用"立即执行函数"(Immediately-Invoked Function Expression,IIFE),可以达到不暴露私有成员的目的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var module1 = (function(){
        var _count = 0;
        var m1 = function(){
          //...
        };
        var m2 = function(){
          //...
        };
        return {
          m1 : m1,
          m2 : m2
        };
      })();

    使用上面的写法,外部代码无法读取内部的_count变量。

    1
    console.info(module1._count); //undefined

    module1就是Javascript模块的基本写法。

    本文来自:http://www.cnblogs.com/tjyoung/p/5569940.html

  • 相关阅读:
    Django 常用过滤器
    计算机概论(2)
    计算机概论(1)
    Django URL视图
    模板标签之if、for
    Django 渲染模板、路径配置、变量使用。

    字符串用法
    hashlib模块
    小列
  • 原文地址:https://www.cnblogs.com/zhou195/p/7655914.html
Copyright © 2020-2023  润新知