博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript模块化编程
阅读量:6540 次
发布时间:2019-06-24

本文共 1023 字,大约阅读时间需要 3 分钟。

一、原始写法

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

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

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

转载于:https://www.cnblogs.com/zhou195/p/7655914.html

你可能感兴趣的文章
VirtualBox 4.2 released !
查看>>
Windows线程同步API
查看>>
内存调试技巧
查看>>
工作日志-2014年11月
查看>>
计算机网络起源 网络发展简介(一)
查看>>
IOS响应者链
查看>>
概率相关问题
查看>>
在IIS上运行node
查看>>
NSNumber(把数字存进数组字典等的问题)
查看>>
openstack部署安装
查看>>
SPOJ KAOS
查看>>
leetcode 183. Customers Who Never Order
查看>>
获取openid [微信小程序]
查看>>
kafka常见异常汇总
查看>>
分布式协调服务Zookeeper集群搭建
查看>>
浅谈Java中静态初始化块跟非初始化块
查看>>
Spring相关
查看>>
23种设计模式-总结
查看>>
secureCRT登录VMware进行开发
查看>>
网上的仿QQ验证码,详细使用方法
查看>>