js Module模式

// 创建一个立即调用的匿名函数表达式// return一个变量,其中这个变量里包含你要暴露的东西// 返回的这个变量将赋值给counter,而不是外面声明的function自身

var counter = (function () {    var i = 0;

    return {        get: function () {            return i;        },        set: function (val) {            i = val;        },        increment: function () {            return ++i;        }    };} ());

// counter是一个带有多个属性的对象,上面的代码对于属性的体现其实是方法

counter.get(); // 0counter.set(3);counter.increment(); // 4counter.increment(); // 5

counter.i; // undefined 因为i不是返回对象的属性i; // 引用错误: i 没有定义(因为i只存在于闭包)
时间: 2024-08-11 05:28:41

js Module模式的相关文章

Module 模式 以及 揭示模式。

---恢复内容开始--- Module模式 : 在传统软件工程中为类提供私有和公有封装的方法. 在js中: Module 模式 使用闭包封装 私有状态和组织. 该模式,返回一个公有的API,而其他的一切都维持在私有闭包中. 由于js没有访问修饰符,我们不能称变量是公有或私有的,因此需要使用函数作用域来模拟这个概念. 使用Module 模式的优点 : 1)只有我们的模块才能享有拥有私有函数的自由. 2)函数异常的发现变的更加容易. 3)更加整洁. 4)支持私有数据. 缺点: 1)改变成员可见性 ,

Javascript Module 模式

Javascript Module Pattern 可以说是在Javascript代码实现过程中的最佳实践方法,能够清晰地表达Javascript面向对象的概念.其核心理念是用Javascript的“类”封装私有和公有的属性和方法.它不允许开发人员定义全局变量去“污染”全局对象.通过这种模式,可以提高Web的性能,也利于维护Javascript的代码. 在Javascript程序设计语言中,函数可以作为一个模块,在某些情况下,需要创建的是单例对象,而不是创建一个类的实例.在模块的内部,公共接口可

深入理解JavaScript系列(3):全面解析Module模式

简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式. 首先我们来看看Module模式的基本特征: 模块化,可重用 封装了变量和function,和全局的namaspace不接触,松耦合 只暴露可用public的方法,其它私有方法全部隐藏 关于Module模式,最早是由YUI的成员Eric Miraglia在4年前提出了这个概念,我们将从一个简单的例子来解释一下基本的用法(如果你已经非常熟悉了,请忽略这一节

module模式小记

当我们以一个通常的写法来写一个构造函数的时候(通过new 调用的函数) 它里面的属性和方法对外界是可见的 function Person() { this.name = "haha"; this.sayName = function(){ return this.name; } return this; } var p1 = new Person(); console.log(p1.sayName());//haha console.log(p1.name);//haha p1.nam

<深入理解JavaScript>学习笔记(3)_全面解析Module模式

简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式. 首先我们来看看Module模式的基本特征: 模块化,可重用 封装了变量和function,和全局的namaspace不接触,松耦合 只暴露可用public的方法,其它私有方法全部隐藏 基本用法 先看一下最简单的一个实现,代码如下: var Calculator = function (eq) { //这里可以声明私有成员 var eqCtl = doc

【JavaScript】设计模式-module模式及其改进

写在前面 编写易于维护的代码,其中最重要的方面就是能够找到代码中重复出现的主题并优化他们,这也是设计模式最有价值的地方 说到这里...... <head first设计模式>里有一篇文章,是说使用模式的心智, 1.初学者"心智" :"我要为HELLO WORLD找个模式" 2.中级人员模式: "或许这里我需要一个单件模式" 3.悟道者心智:"在这里使用一个装饰者模式相当自然" but,but,but,不学,连初学者

【设计模式】module模式&amp;&amp;Revealing module (揭示)模式

写在前面 <head first设计模式>里有一篇文章,是说使用模式的心智, 1.初学者"心智" :"我要为HELLO WORLD找个模式" 2.中级人员模式: "或许这里我需要一个单件模式" 3.悟道者心智:"在这里使用一个装饰者模式相当自然" but,but,but,不学,连初学者都不算呐... 先了解一下设计模式的起源吧: >>>设计模式的起源就比较有意思了,设计模式最初起源于奥地利维也纳的

创建并发布node.js module

? 创建node.js module. 创建一个文件夹,用来存放module. Cd到新创建的文件夹,运行npm init,会提示输入package的信息. 可以按照这个视频的来输入.Test command可以为空.Package 的名字不能有大写字母,如果要发布到公网,要用不与已有module一样的名字. 输入完后输入yes,或者y, 会生成一个 package.json文件. 创建入口文件index.js.(名字也可以在npm init的时候进行设置) 在index.js中输入如下的内容(

node.js module初步理解,exports与module.exports的区别

在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组织方式,比如Java中的包.C#中的程序集等,node.js使用模块和包来组织,其机制实现参照了CommonJS标准,虽未完全遵守,但差距不大,使用起来非常简单. 在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块,文件内容可能是我们封装好的一些JavaScript