Javascript百学不厌 - 模块模式

记录自己觉得重要又可能忘记的东西

用模块模式产生安全的对象:

var serial_maker = function () {
    var preifx = ‘‘;
    var seq = 0;
    return {
      set_prefix: function (p) {
        preifx = String(p);
      },
      set_seq: function (s) {
        seq = s;
      },
      gensym: function () {
        var result = preifx + seq;
        seq++;
        return result
      }
    }
  }
  var maker = serial_maker();
  maker.set_prefix(Q);
  maker.set_seq(100);
  var unique = maker.gensym(); // "Q100"

maker 包含的方法没有 this ,因此无法破坏maker。除非调用对应的方法,否则没办法改变 preifx 和 seq 的值。

maker 就是一组函数的集合,而且那些函数被授予特权,拥有访问私有状态的权利。

时间: 2024-11-05 19:29:51

Javascript百学不厌 - 模块模式的相关文章

Javascript百学不厌-递归

虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { if (n === 1) return 1; return n * fac(n - 1); } fac(5) // 120 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4*fac(3))) (5*(4*(3*fac(2)))) (5*(4*(3*(2*fac(1))))) (5*(4*(3*2))) (5*(4*(6))) (5*24) 120 这里需要讲明的是: 函数调用会

JavaScript基础对象创建模式之模块模式(Module Pattern)(025)

模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件需求而不断的被添加,替代和删除.模块模式由几种我们已经介绍过的模式共同组成: 命名空间模式 即时函数模式 私有成员与访问控制方法模式 依赖声明模式 模块模式的第一步是建立一个命名空间.首先我们用先前介绍的namespace()方法创建一个工具模块例子,这个例子模块提供一些数组功能: MYAPP.na

深入理解JavaScript 模块模式

模块模式是JavaScript一种常用的编码模式.这是一般的理解,但也有一些高级应用没有得到很多关注.在本文中,我将回顾基础知识,浏览一些不错的高级技巧,甚至我认为是原生基础的. 基础知识 首先我们开始简单概述模型模式.三年前Eric Miraglia(YUI)的博文使模型模式众所周知.如果你已经很熟悉模型模式,可以直接阅读“高级模式”. 匿名闭包 这是一切成为可能的基础,也是JavaScript最好的特性.我们将简单的创建匿名函数,并立即执行.所有函数内部代码都在闭包(closure)内.它提

深入理解JavaScript 模块模式

模块模式是JavaScript一种常用的编码模式.这是一般的理解,但也有一些高级应用 没有得到很多关注.在本文中,我将回顾基础知识,浏览一些不错的高级技巧,甚至我认为是原生基础的. 基础知识首先我们开始简单概述模型模式.三年前Eric Miraglia(YUI)的博文使模型模式众所周知.如果你已经很熟悉模型模式,可以直接阅读“高级模式”.匿名闭包这是一切成为可能的基础,也是JavaScript最好的特性.我们将简单的创建匿名函数,并立即执行.所有函数内部代码都在闭包(closure)内.它提供了

【javascript设计模式】构造器模式、模块模式、单例模式

构造器模式(Constructor) 构造器模式是学习js最早接触的一种,实现主要如下: 1 function myObject(name){ 2 this.name = name; 3 } 4 5 myObect.propotype = function sayName(){ 6 alert(this.name); 7 } 使用的时候需要new一个对象. 1 var myObj = new myObject('hello'); 2 myObj.sayName(); 模块模式(Module) 模

(转)深入理解JavaScript 模块模式

深入理解JavaScript 模块模式 (原文)http://www.cnblogs.com/starweb/archive/2013/02/17/2914023.html 英文:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth 模块模式是JavaScript一种常用的编码模式.这是一般的理解,但也有一些高级应用没有得到很多关注.在本文中,我将回顾基础知识,浏览一些不错的高级技巧,甚至我认为是原生基础的

javascript模块模式

目前模块模式得到了广泛应用,因为它提供了结构化的思想并且有助于组织日益增长的代码.模块模式提供了一种创建自包含非耦合代码片段有利工具,可以将它视为黑盒功能.板栗: var array = (function(){ //私有变量 var array_string = '[object Array]', ops = Object.prototype.toString; //公开 API return { isArray : function(a){ return ops.call(a) === ar

模块模式

模块模式: 在 JavaScript 中,Module模块用于模拟类的概念,使一个单独的对象拥有共有/私有方法和变量,从而屏蔽来自全局作用域的特殊部分.(产生的结果是:函数名与在页面上其他脚步定义的函数冲突的可能性降低) 涉及: 对象字面量: 闭包: 作用域. 实现的方法: 对象字面量表示法: Module 模式: AMD 模式: CommonJS 模式: ECMAScript Harmony 模块. 优点: 提供一个包装混合公有/私有方法和变量的方式,防止其泄露至全局作用域,与其他接口发生冲突

[转]大型 JavaScript 应用架构中的模式

目录 1.我是谁,以及我为什么写这个主题 2.可以用140个字概述这篇文章吗? 3.究竟什么是“大型”JavaScript应用程序? 4.让我们回顾一下当前的架构 5.想得长远一些 6.头脑风暴 7.架构提议 7.1 模块化理论 7.2 CommonJS模块 7.3 外观模式 7.4 中介者模式 7.5 应用外观 7.6 核心的抽象 7.7 整合 7.8 超越发布/订阅:自动注册事件 7.9 常见问题 13 August 2013 原文:Patterns For Large-Scale Java