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
原创粉丝点击