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
/**
* 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的更多相关文章
- JavaScript Module Pattern: In-Depth
2010-03-12 JavaScript Module Pattern: In-Depth The module pattern is a common JavaScript coding patt ...
- JavaScript module pattern精髓
JavaScript module pattern精髓 avaScript module pattern是一种常见的javascript编码模式.这种模式本身很好理解,但是有很多高级用法还没有得到大家 ...
- 玩转JavaScript module pattern精髓
JavaScript module pattern是一种常见的javascript编码模式.这种模式本身很好理解,但是有很多高级用法还没有得到大家的注意.本文,我们将回顾这种设计模式,并且介绍一些高级 ...
- Learning JavaScript Design Patterns The Module Pattern
The Module Pattern Modules Modules are an integral piece of any robust application's architecture an ...
- 【JavaScript】JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系
通行的Javascript模块规范共有两种:CommonJS和AMD 先说说CommonJS CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScr ...
- JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系
这几天在学习CommonJS的时候突然在StackOverflow上搜索到一个非常好的一个帖子,是关于CommonJS, AMD和RequireJS之间的关系的问答贴.我感觉写的非常好,鉴于没有找到相 ...
- JavaScript Patterns 5.4 Module Pattern
MYAPP.namespace('MYAPP.utilities.array'); MYAPP.utilities.array = (function () { // dependencies var ...
- Understanding the Module Pattern in JavaScript
Understanding the Module Pattern in JavaScript Of all the design patterns you are likely to encounte ...
- JavaScript基础对象创建模式之模块模式(Module Pattern)(025)
模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件 ...
随机推荐
- Maya cmds pymel 单位和轴向设置
Maya cmds pymel 单位和轴向设置 import maya.cmds as cmds # 1. to make the Y-axis of the world to be the up a ...
- 线程有gil锁
gil锁作用: 遇到阻塞( 比如 recv() , accept() )就切换
- Pushing Boxes POJ - 1475 (嵌套bfs)
Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not ...
- 002.LVS管理工具的安装与使用
一 安装IPVS 可通过源码安装或yum安装,源码包如下: http://www.linuxvirtualserver.org/software/ipvs.html [root@lvsmaster ~ ...
- Java8中的 lambda 和Stream API
前言 由于项目中用到了比较多有关于 Java8 中新的东西,一开始自己只是会写,但是写起来不太顺,然后就在网上找到了一个很好的关于Java8新特性的视频,所以就进行了学习了一下,以下是自己对 la ...
- BZOJ-5-4300: 绝世好题-位-DP
思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数 ...
- 环形动画加载视图AnimatedCircleLoadingView
环形动画加载视图AnimatedCircleLoadingView AnimatedCircleLoadingView是基于Android手表动画android-watch-loading-anima ...
- 1418 抱歉 ACM 欧拉公式
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1418 思路:一看题目,明显是要求我们找规律,于是我就在草稿纸上画了很多个图像,还是没有找到规律,于是我就在 ...
- 2109 ACM 排序
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2109 题意:简单的排序问题 代码: #include<cstdio> #include< ...
- django rest_framework 序列化组件详解
为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到 ...