Javascript 设计模式 -- Module(模块)模式
来源:互联网 发布:二叉树前序遍历算法 编辑:程序博客网 时间:2024/05/27 00:40
方法一 对象字面量表示法
在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个 name/value 对不加逗号,否则会出错。
/** * 使用字面量表示法定义模块 */var myModule = { myProperty: "someValue", myConfig: { useCaching: true, language: "en" }, myMethod: function () { console.log("the first method"); }, myMethod2: function () { console.log("the second method"); },};console.log(myModule.myProperty); // someValueconsole.log(myModule.myConfig); // {useCaching: true, language: 'en'}console.log(myModule.myConfig.useCaching); // truemyModule.myMethod(); // the first methodmyModule.myMethod2(); // the second method
方法二 Module模式
Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式
,防止其污染全局命名空间,防止其泄露到全局作用域。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。
/** * Module方法定义 */var myNameSpace = (function () { // 私有变量 var myPrivateVar = 0; // 私有函数 var myPrivateMethod = function (foo) { console.log(foo); }; // 公有API return { // 公有变量 myPublicVar: "foo", // 公有方法 myPublicFunction: function (bar) { // 操作私有变量 myPrivateVar ++; // 调用私有函数 myPrivateMethod(bar); }, // 公有方法二 myPublicFunction2: function () { console.log("success"); } };}) ();console.log(myNameSpace.myPrivateVar); // undefinedconsole.log(myNameSpace.myPrivateVar); // undefinedconsole.log(myNameSpace.myPublicVar); // fooconsole.log(myNameSpace.myPublicFunction); // FunctionmyNameSpace.myPublicFunction2(); // successmyNameSpace.myPublicFunction("i am first"); // i am first
0 0
- Javascript 设计模式 -- Module(模块)模式
- Javascript 设计模式 -- Module(模块)模式
- JavaScript设计模式之Module(模块)模式
- javascript设计模式-module(模块)模式
- Javascript 设计模式 -- Revealing Module(揭示模块)模式
- 【javascript设计模式】2.Module(模块)模式
- javascript设计模式之Module模块
- [学习]JavaScript设计模式——Revealing Module(揭示模块)模式
- JavaScript 设计模式 - 模块模式
- javascript 设计模式-模块模式
- js模块模式(module)
- Module (模块) 模式
- 【学习】Javascript设计模式——Module模式
- 【javascript设计模式】3.Revealing Module(揭示)模式
- Revealing Module(揭示模块)模式
- javascript Module模式
- javascript Module模式
- JavaScript > module模式
- 2015-01-07 继续学习
- iOS8
- 避免hadoop的堆内存错误
- 1043. Is It a Binary Search Tree (25)
- iOS开发中,应用内直接跳转到Appstore
- Javascript 设计模式 -- Module(模块)模式
- Javascript 设计模式 -- Revealing Module(揭示模块)模式
- 什么时候使用Looper.prepare()
- javascript中数组化的一般见解
- linux中inode详解
- eclipse 中 svn 更新 提交 同步资源库 详细解释下他们的功能
- JavaScript代码组织结构良好的5个特点[reuqire.js]
- poj 2530 Tetris Alphabet 拓扑排序
- JavaScript内部原理系列-执行上下文(Execution Context)