美文网首页
关于JS模块模式的写法和作用

关于JS模块模式的写法和作用

作者: 一点红3340 | 来源:发表于2017-07-21 17:59 被阅读0次

前言

本来对于js中模块模式这个词还没有很清晰的定义,但在看一个小项目的时候发现了用模块模式定义工具函数的作用,而且已经被很多大公司使用的ECMAScript标准第六版,正式支持"类"和"模块",下面这种写法可能以后会被取代吧,不过也是目前流行的写法,暂且记录着。

简介

首先我们来看看Module模式的基本特征:

  • 模块化,可重用
  • 封装了变量和function,减少全局变量的使用(不遗留和污染全局变量)
  • 私有方法和私有变量全部隐藏(更安全),并提供公有接口

Module模式最简单的方式:

var Calculator = function (eq) {
    //这里可以声明私有成员
 
    var eqCtl = document.getElementById(eq);
 
    return {
        // 暴露公开的成员
        add: function (x, y) {
            var val = x + y;
            eqCtl.innerHTML = val;
        }
    };
};

需要如此调用:

var calculator = new Calculator('eq');
calculator.add(2, 2);

每次用的时候都要new一下,也就是说每个实例在内存里都是一份copy,浪费了很多内存

立即执行函数写法:

var module1 = (function(){
    var _count = 0;
    var m1 = function(){
      //...内部代码
    };
    var m2 = function(){
      //...内部代码
    };
    return {
      m1 : m1,
      m2 : m2
    };
  })();

使用上面的闭包写法,外部代码无法读取内部的_count变量,并且私有方法m1和m2不会暴露,而且函数会立即执行,将私有方法集合保存到module1变量(module1本来是一个方法,因为它立即执行,所以会伪装成一个变量),之后使用module1.m1()或module1.m2()的方式访问私有变量(_count)并且可以传入参数执行内部代码,这样的调用方法会让内存中只存在一份copy,节约了内存。

后面还有比较高级的扩展方法,不过此文章只为了阐述基础,而且已经满足了大部分情况的使用了,倘若以后在实际开发中用到了高级扩展的写法,再进行总结。

相关文章

  • 关于JS模块模式的写法和作用

    前言 本来对于js中模块模式这个词还没有很清晰的定义,但在看一个小项目的时候发现了用模块模式定义工具函数的作用,而...

  • 前端javascript模块化

    JavaScript js 模块化 关于js模块化的理解写法一 写法二 写法三 写发四(不推荐) 写发五 (错误写...

  • requireJS

    js的模块化发展历程 函数式 对象写法 立即执行函数 放大镜模式 宽放大模式 输入全局变量

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • nodejs

    nodejs模块化:每个文件或者每个js都是一个独立的模块,都有自己的独立作用域,也叫作模块作用域。node.js...

  • 模块模式

    模块模式 模块 模式实在单例对象上加上扩展,通过作用域链来关联私有变量和特权方法对象字面量封装模块,闭包实现私有和...

  • Module

    module是node.js最常用的模块,是node.js的根基,主要作用是导入模块,组织模块。 简单原理 mod...

  • Js模块化——模块的写法

    本思维导图由阮一峰博客文章:Javascript模块化编程(一):模块的写法经本人整理转化而来,感谢阮一峰 如有后...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • Node进阶 ---- module&npm

    1. JS模块化方面的不足 JS没有模块系统,不支持封闭的作用域和依赖管理 没有标准库,没有文件系统和IO流API...

网友评论

      本文标题:关于JS模块模式的写法和作用

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