(2) Module (模块)模式

module模式,是建立在对象字面量上面的,最基本的对象字面量的形式是:

var Car = {};

基于对象字面量的module模式的实现方式:

 var Car = {
        color: ‘white‘,
        getCarPrice: function () {
        },
        getCarColor: function () {
            console.log(this.color);
        }
    };
    Car.getCarColor();

再做深入的理解,在module模式上实现private和public的方法和变量的方式。

var testModule = function(){
        var privateValue = 1;
        var publicValue = 2;
        var privateMethod = function(){};
        var publicMethod = function(){
            console.log(privateValue);
        };

        var service = {
            publicMethod:publicMethod,
            publicValue:publicValue
        };
        return service;
    };
    testModule().publicMethod();//1
    testModule().privateMethod();//undefined is not a function
    testModule().privateValue;//no error , just console nothing

继续修改一下

var testModule = (function(){
        var privateValue = 1;
        var publicValue = 2;
        var privateMethod = function(){};
        var publicMethod = function(){
            console.log(publicValue);
        };

        var service = {
            publicMethod:publicMethod,
            publicValue:publicValue
        };
        return service;
    })();
    testModule.publicMethod();//2
    testModule.publicValue = 3;
    testModule.publicMethod();//2 无法修改,

如果想要修改内部变量,只能通过提供外部方法去修改

var testModule = (function(){
        var privateValue = 1;
        var publicValue = 2;
        var privateMethod = function(){};
        var publicMethod = function(){
            console.log(publicValue);
        };
        var setPublicValue = function(value){
            publicValue = value;
        };

        var service = {
            publicMethod:publicMethod,
            publicValue:publicValue,
            setPublicValue:setPublicValue
        };
        return service;
    })();
    testModule.publicMethod();//2
    testModule.setPublicValue(4);
    testModule.publicMethod();//4 
时间: 2024-10-06 19:25:01

(2) Module (模块)模式的相关文章

javascript设计模式-module(模块)模式

模块是任何强大应用程序中不可或缺的一部分,它通常能帮助我们清晰地分离和组织项目中的代码单元. js中实现模块的方法: 对象字面量表示法 Module模式 AMD模块 CommonJS模块 ECMAScript Harmony 模块 对象字面量 对象字面量不需要使用new运算符进行实例化,但不能用在一个语句的开头,因为开始的可能被解读为一个块的开始,在对象的外部,新成员可以使用如下赋值语句添加到对象字面量上,myModule.property = "someValue". var myM

【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基础对象创建模式之模块模式(Module Pattern)(025)

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

递归、闭包、私有变量、特权方法、单例、模块模式(module pattern)

//使用命名函数表达式实现递归 var factorial = (function f(num) {     if (num <= 1) {         return 1;     } else {         return num * f(num - 1);     } }); //用作块级作用域(私有作用域)的匿名函数 (function(){     var now = new Date();     if (now.getMonth() == 0 && now.get

模块模式

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

(二)构造器模式与模块模式

这一篇主要讲述构造器(Constructor)模式和模块(Module)模式以及相关的变体模式,例子是JavaScript代码. 构造器(Constructor)模式 对象构造器用于创建特定类型的对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值.概念并没什么好说的,这种模式最是简单,虽然名字是那么吊炸天,但内容没什么,看下面例子就可明白. 基本构造器 function Car( model, year, miles ) { this.mode

深入理解JavaScript 模块模式

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

JS模块模式

模块模式是非常常见的模式!它是以下几种模式的组合 命令函数 即时函数 私有和特权成员 声明依赖 该模式的第一步是建立一个命名空间. 下一步是定义该模块,通过即时函数来定义,主要要平衡私有函数和对外接口,同时在即时函数上面,可以声明模块可能有依赖模块的位置.最终结果是一个 由即时函数返回的对象,其中该对象包含了你模块的公共API. MYAPP.utilities.example = (function(){ //依赖模块 var obj = MYAPP.utilities.object; //私有

深入理解JavaScript&#160;模块模式

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

PHP运行模式(cgi,fast-cgi,cli, ISAPI ,web模块模式)【转载】

PHP运行模式有5钟: 1)cgi 通用网关接口(Common Gateway Interface))2)fast-cgi 常驻 (long-live) 型的 CGI3)cli  命令行运行   (Command Line Interface) 4)ISAPI模式(Windows中使用的) 5)web模块模式 (apache等web服务器运行的模块模式) 1.  CGI(Common Gateway Interface) CGI即通用网关接口(Common Gateway Interface),