模块

作者: 灯光树影 | 来源:发表于2018-08-31 18:15 被阅读0次

定义:模块是一个提供接口却隐藏状态与实现的函数或对象

我们可以用函数和闭包来构造模块

  • 例子一:
    假定要给String增加一个deentityify方法。它的任务是寻找字符串中的html字符实体并把它们替换成对应的字符。
    分析:
    • 需要在一个对象中保存字符实体的名字和它们对应的字符。
    • 这个对象放置的位置考虑:
      • 把它放在一个全局变量中,但全局变量是魔鬼
      • 把它定义在函数的内部,但是会带来运行时的损耗。因为每次执行该函数的时候该字面量都会被求值一遍。
      • 理想的方式是把它放在一个闭包,而且也许还能提供一个增加更多字符实体的扩展方法
    String.method('deentityify', function(){
      // 字符实体表。它映射字符实体的名字到对应的字符
      var entity = {
          quot: '"' ,
          lt: '<',
          gt: '>'
      };
      // 返回deentityify方法
      return function(){
          // 这才是deentityify方法。它调用字符串的replace方法
          return this.replace(/&([^&;]+);/g,
              function(a, b){
                  var r = entity[b];
                  return typeof r === 'string' ? r : a;
              }
          );
      };
    }());
    // 调用
    var str = "1 + 2 &lt; 4";
    parseStr = str.deentityify();
    console.log(parseStr);
    
  • 例子二:
    构造一个用来产生序列号的对象
    var serial_maker = function(){
      // 返回一个用来产生唯一字符串的对象
      // 唯一字符串由两部分组成:前缀+序列号
      // 该对象包含一个设置前缀的方法,一个设置序列号的方法
      // 和一个产生唯一字符串的gensym方法
      var prefix = '';
      var seq = 0;
      return {
          set_prefix: function(p){
              prefix = String(p);
          },
          set_seq: function(s){
              seq = s;
          },
          gensym: function(){
              var result = prefix + seq;
              seq += 1;
              return result;
          }
      }  
    }
    
    模块模式通常结合单例模式使用,javascript的字面量创建对象就是单例模式。
    它通常作为工具为其它部分提供功能支持

相关文章

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

  • 【时间管理100讲】精髓全在这里啦

    理论模块 精力管理。 行动管理。 学习模块。 高空模块。 反思模块。 运动模块。 阅读模块。 旅行模块。 人际关系...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • 重点知识复习(异常处理)

    1.模块 导入模块(自定义模块,第三方模块,系统其他模块)import 模块 ----> 模块.内容from 模...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • Python不同网络模块网页源代码的获取

    requests模块 或者使用 selenium模块 BeautifulSoup模块 urllib模块

  • day10 pygame

    一、异常处理1.模块导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 im...

网友评论

      本文标题:模块

      本文链接:https://www.haomeiwen.com/subject/iylewftx.html