/**
* Created with JetBrains PhpStorm.
* User: scotty
* Date: 28/08/2013
* Time: 19:39
*/
;(function(global){
"use strict"; var M = function() { // Constructor. arguments are passed
// from Module() call. this refers to m.
function init() {
meth_priv2();
m.meth_pub2();
} // Empty object, to be populated with
// public properties and methods.
var m = {}; // Private properties. define using var x.
// closure keeps them private.
var prop_priv = "private property"; // public properties. define using m.x.
m.prop_pub = "public property"; // private methods. define as var x = function() {}
// closure keeps them private.
var meth_priv = function() {
console.log(prop_priv);
console.log(m.prop_pub);
}; var meth_priv2 = function() { // access another priv method
meth_priv(); // access a pub method
m.meth_pub();
}; // public methods. define as m.x = function() {}
// private props/methods accessed via x.
// public props/methods accessed via m.x
m.meth_pub = function() {
console.log(prop_priv);
console.log(m.prop_pub);
}; m.meth_pub2 = function() { // access a priv method
meth_priv(); // access another pub method
m.meth_pub();
}; // call the constructor
init.apply(m, arguments);
return m;
}; // determine correct export method depending upon
// environment that this script was loaded in:
if (typeof module != 'undefined' && module.exports) {
module.exports = M; // Node / CommonJS...
} else if (typeof define === 'function' && define.amd) {
define('Module', [], M); // or RequireJS / AMD...
} else {
global.Module = M; // or browser
}
global.m=new M();
})(this.window || global);

  使用:

    require(['m'],function(){
m.meth_pub();
});

  

;(function(global){
"use strict"; var M = function() { //构建函数
function init() {
meth_priv2();
m.meth_pub2();
}
var m = {};
//私有变量
var prop_priv = "private property";
//公有属性
m.prop_pub = "public property"; //私有函数
var meth_priv = function() {
console.log(prop_priv);
console.log(m.prop_pub);
}; var meth_priv2 = function() {
//访问另一私有方法
meth_priv();
//访问公有方法
m.meth_pub();
}; //公有方法
m.meth_pub = function() {
console.log(prop_priv);//访问私有方法
console.log(m.prop_pub);//访问公有方法
}; m.meth_pub2 = function() {
//访问私有方法
meth_priv();
//访问公有方法
m.meth_pub();
}; // 调用构建函数
init.apply(m, arguments);
return m;
}; if (typeof module != 'undefined' && module.exports) {
module.exports = M; // Node / CommonJS...
} else if (typeof define === 'function' && define.amd) {
define('Module', [], M); // or RequireJS / AMD...
} else {
global.Module = M; // or browser
}
global.m=new M(); })(this.window || global);

  

Javascript Module pattern template. Shows a class with a constructor and public/private methods/properties. Also shows compatibility with CommonJS(eg Node.JS) and AMD (eg requireJS) as well as in a br的更多相关文章

  1. JavaScript Module Pattern: In-Depth

    2010-03-12 JavaScript Module Pattern: In-Depth The module pattern is a common JavaScript coding patt ...

  2. JavaScript module pattern精髓

    JavaScript module pattern精髓 avaScript module pattern是一种常见的javascript编码模式.这种模式本身很好理解,但是有很多高级用法还没有得到大家 ...

  3. 玩转JavaScript module pattern精髓

    JavaScript module pattern是一种常见的javascript编码模式.这种模式本身很好理解,但是有很多高级用法还没有得到大家的注意.本文,我们将回顾这种设计模式,并且介绍一些高级 ...

  4. Learning JavaScript Design Patterns The Module Pattern

    The Module Pattern Modules Modules are an integral piece of any robust application's architecture an ...

  5. 【JavaScript】JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系

    通行的Javascript模块规范共有两种:CommonJS和AMD 先说说CommonJS   CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScr ...

  6. JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系

    这几天在学习CommonJS的时候突然在StackOverflow上搜索到一个非常好的一个帖子,是关于CommonJS, AMD和RequireJS之间的关系的问答贴.我感觉写的非常好,鉴于没有找到相 ...

  7. JavaScript Patterns 5.4 Module Pattern

    MYAPP.namespace('MYAPP.utilities.array'); MYAPP.utilities.array = (function () { // dependencies var ...

  8. Understanding the Module Pattern in JavaScript

    Understanding the Module Pattern in JavaScript Of all the design patterns you are likely to encounte ...

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

    模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件 ...

随机推荐

  1. 将xml 写到内存中再已string类型读出来

    System.IO.MemoryStream ms = new System.IO.MemoryStream(); xmlDoc.Save(ms); System.IO.StreamReader sr ...

  2. 059 SparkStream介绍

    离线计算框架:MR,hive-->对时间要求不严格 实时计算框架:SparkCore-->要求job执行时间比较快 交互式计算框架:SparkSQL,Hive,-->提供SQL操作的 ...

  3. PAT (Basic Level) Practise - 换个格式输出整数

    题目链接:https://www.patest.cn/contests/pat-b-practise/1006 1006. 换个格式输出整数 (15) 时间限制 400 ms 内存限制 65536 k ...

  4. hexo添加404公益界面

    http://hellolb.top/2018/08/16/hexo添加404公益界面/ hexo个人博客添加404公益界面,这里我使用的腾讯404公益界面 我的博客主题是hexo+yilia,其实所 ...

  5. 最详细的Vuex教程

    什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. ...

  6. 给有C或C++基础的Python入门 :Python Crash Course 4 操作列表 4.4 -- 4.5

    上接前一篇文章. 4.4 使用列表的一部分 一,切片 切边,顾名思义,就是处理列表的部分元素. 我们可以联系一下C++的一段语句:for(int i = 0; i < n-2; ++i) cou ...

  7. 洛谷.4245.[模板]任意模数NTT(MTT/三模数NTT)

    题目链接 三模数\(NTT\): 就是多模数\(NTT\)最后\(CRT\)一下...下面两篇讲的都挺明白的. https://blog.csdn.net/kscla/article/details/ ...

  8. Windows环境下Composer的安装教程

    1.先下载Composer-Setup.exe,下载地址:下载Composer .会自动搜索php.exe的安装路径,如果没有,就手动找到php路径下的php.exe. 2.在PHP目录下,打开php ...

  9. Vue发送请求

    可以试试玩ajax请求,个人觉得axios用Promise包装了下,代码美观 axios请求使用方法      https://github.com/axios/axios#using-applica ...

  10. 原生CSS设置网站主题色—CSS变量赋值

    定义CSS变量 在css文件顶部定义css变量,注意必须以--开头,使用:root包括这几个变量 :root { --main-bg-color: #ff7675; --color1: #fbfee9 ...