美文网首页
javascript模块研究之 - 闭包实现

javascript模块研究之 - 闭包实现

作者: 会煮咖啡的猫咪 | 来源:发表于2016-11-10 13:52 被阅读30次

前言 - 为什么要闭包

我高度概括几点吧

  1. 实现面向对象 类
  2. 代码便于阅读
  3. 代码之间不会互相污染
  4. 提高复用性

单例闭包

代码:

// 声明
var myobjectModel = new Object({
    num : 0,
    add : function() {
        myobjectModel.num ++;
    },
    get : function() {
        return myobjectModel.num;
    }
});

// 调用
myobjectModel.add();
myobjectModel.add();
myobjectModel.add();
var val = myobjectModel.get();

输出:

3

直接对象访问 无需 new , 特别适合功能对象函数

非单例闭包

代码:

// 声明
var myobjectModel = function () {
     var instance = new Object();
     instance.num = 0;

     instance.add = function () {
         instance.num ++;
     };

     instance.get = function () {
         return instance.num;
     };

     return instance;
};

// 调用
var my1 = new myobjectModel();
my1.add();
my1.add();
var val1 = my1.get();
log(val1);

var my2 = new myobjectModel();
my2.add();
my2.add();
var val2 = my2.get();
log(val2);

输出:

2
2

对象被new后,互不影响。
适合可复用组件封装。

如果想内部对象私有化

代码:

// 声明
var myobjectModel = function () {
     var instance = new Object();
     instance.num = 0;

     instance.add = function () {
         instance.num ++;
     };

     instance.get = function () {
         return instance.num;
     };

     return {
         add : instance.add,
         get : instance.get
     };
};

运行时:

闭包私有化

如果需要其它模块支持

代码:

var myModule = (function(mod){
    
    ...
    
})(otherModule);

对象作为参数传入

如果各种原因模块没有载入成功

代码:

var myModule = (function(mod){
    
    ...
    
})(otherModule || {});

默认一个空对象进去

参考代码

https://github.com/hans007/JavaScriptCodes/tree/master/JS%E9%97%AD%E5%8C%85

我的博客

相关文章

  • javascript模块研究之 - 闭包实现

    前言 - 为什么要闭包 我高度概括几点吧 实现面向对象 类代码便于阅读代码之间不会互相污染提高复用性 单例闭包 代...

  • js 代码模块化

    JavaScript代码模块化 隐藏模块内部实现 定义模块接口 解决依赖关系 利用对象、闭包和立即执行函数实现模块...

  • JavaScript----闭包

    javascript之闭包 闭包的概念     闭包(closure)是 JavaScript 的一种语法特性。 ...

  • Javascript 闭包

    闭包 (注:所以案例以 javascript 实现) 初识闭包 什么是闭包 MDNClosures are fun...

  • js利用闭包实现模块化

    本文主要介绍了JavaScript利用闭包实现模块化的方法。 利用闭包的强大威力,但从表面上看,它们似乎与回调无关...

  • JavaScript模块化-require.js,r.js和打包

    在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章...

  • 前端工程的问题

    在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章...

  • JavaScript闭包

    闭包(closure)是 Javascript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 闭包...

  • JavaScript函数(二)闭包closure

    闭包 闭包(closure)是 JavaScript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。...

  • JS闭包

    闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 要...

网友评论

      本文标题:javascript模块研究之 - 闭包实现

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