/**
* 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. js中的new Option默认选中

    new Option("文本","值",true,true).后面两个true分别表示默认被选中和有效! //js默认选中 var sel = document ...

  2. spring cloud (四、服务消费者demo_consumer)

    spring cloud (一.服务注册demo_eureka) spring cloud (二.服务注册安全demo_eureka) spring cloud (三.服务提供者demo_provid ...

  3. Python编译安装遇到的问题

    1.python在make时候报错 Python build finished, but the necessary bits to build these modules were not foun ...

  4. vsftpd中配置文件详解

    在vsftp服务器中,配置文件/etc/vsftpd/vsftpd.conf文件是配置的核心内容,其具体的配置信息详细情况如下: 1.默认配置: 1>允许匿名用户和本地用户登陆. anonymo ...

  5. 向量图兼容组件VectorCompat

    向量图兼容组件VectorCompat Android从5.0(API Level 21)开始,支持矢量图和动画矢量图.采用这两种图,可以避免传统图片因为缩放而产生失真.VectorCompat组件是 ...

  6. angular笔记_9

    <style> .red{background:red} </style> 失去焦点 <input type="text" ng-model=&quo ...

  7. HTML使用的几个小知识点

    本文主要分享几个网页前端的几个基础知识点,用于零碎的html知识学习,同时也是在实践中的一些心得.最后给出了几个小例子. 1. 网页编程初识 掌握基本的html标签以及CSS语法 学会查看网页的源代码 ...

  8. Scrapy基础(九)————将不定长度的URL进行固定长度写入Item中

    前面讲到将每篇文章的URL写入Item,但是每个url的长度是不同的,可以在Item中设置一个字段怎样使得每个URL的长度相同,这就需要对每个URL进行md5运算,使得长度统一,再加入到设定的Item ...

  9. Usaco 4.3.1 Buy Low, Buy Lower 逢低吸纳详细解题报告

    问题描述: "逢低吸纳"是炒股的一条成功秘诀.如果你想成为一个成功的投资者,就要遵守这条秘诀:  "逢低吸纳,越低越买"  这句话的意思是:每次你购买股票时的股 ...

  10. XX.exe 系统找不到指定文件

    错误:unable to start ... XX.exe 系统找不到指定文件 今天调试一个项目,关于泊松融合的,项目名叫PoissonEditing,编译通过之后一直再报错,找不到PoissonEd ...