好程序员web前端培训教程分享Javascript设计模式
方法一对象字面量表示法 在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的name/value 对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个 name/value 对不加逗号,否则会出错。 /**
[if !supportLists]1. [endif]<p><font size="3"> * 使用字面量表示法定义模块</font></p>
[if !supportLists]2. [endif]<p><font size="3"> */</font></p>
[if !supportLists]3. [endif]<p><font size="3"> var myModule = {</font></p>
[if !supportLists]4. [endif]<p><font size="3"> myProperty: "someValue",</font></p>
[if !supportLists]5. [endif]<p><font size="3"> myConfig: {</font></p>
[if !supportLists]6. [endif]<p><font size="3"> useCaching: true,</font></p>
[if !supportLists]7. [endif]<p><font size="3"> language: "en"</font></p>
[if !supportLists]8. [endif]<p><font size="3"> },</font></p>
[if !supportLists]9. [endif]<p><font size="3"> myMethod: function () {</font></p>
[if !supportLists]10. [endif]<p><font size="3"> console.log("the first method");</font></p>
[if !supportLists]11. [endif]<p><font size="3"> },</font></p>
[if !supportLists]12. [endif]<p><font size="3"> myMethod2: function () {</font></p>
[if !supportLists]13. [endif]<p><font size="3"> console.log("the second method");</font></p>
[if !supportLists]14. [endif]<p><font size="3"> },</font></p>
[if !supportLists]15. [endif]<p><font size="3"> };</font></p>
console.log(myModule.myProperty); // someValue
[if !supportLists]1. [endif]<p><font size="3"> console.log(myModule.myConfig); // {useCaching: true, language: 'en'}</font></p>
[if !supportLists]2. [endif]<p><font size="3"> console.log(myModule.myConfig.useCaching); // true</font></p>
[if !supportLists]3. [endif]<p><font size="3"> myModule.myMethod(); // the first method</font></p>
[if !supportLists]4. [endif]<p><font size="3"> myModule.myMethod2(); // the second method</font></p>
方法二Module模式 Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式 ,防止其污染全局命名空间,防止其泄露到全局作用域。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。 /**
[if !supportLists]1. [endif]<p><font size="3"> * Module方法定义</font></p>
[if !supportLists]2. [endif]<p><font size="3"> */</font></p>
[if !supportLists]3. [endif]<p><font size="3"> var myNameSpace = (function () {</font></p>
[if !supportLists]4. [endif]<p><font size="3"> // 私有变量</font></p>
[if !supportLists]5. [endif]<p><font size="3"> var myPrivateVar = 0;</font></p>
[if !supportLists]6. [endif]<p><font size="3"> // 私有函数</font></p>
[if !supportLists]7. [endif]<p><font size="3"> var myPrivateMethod = function (foo) {</font></p>
[if !supportLists]8. [endif]<p><font size="3"> console.log(foo);</font></p>
[if !supportLists]9. [endif]<p><font size="3"> };</font></p>
[if !supportLists]10. [endif]<p><font size="3"> // 公有API</font></p>
[if !supportLists]11. [endif]<p><font size="3"> return {</font></p>
[if !supportLists]12. [endif]<p><font size="3"> // 公有变量</font></p>
[if !supportLists]13. [endif]<p><font size="3"> myPublicVar: "foo",</font></p>
[if !supportLists]14. [endif]<p><font size="3"> // 公有方法</font></p>
[if !supportLists]15. [endif]<p><font size="3"> myPublicFunction: function (bar) {</font></p>
[if !supportLists]16. [endif]<p><font size="3"> // 操作私有变量</font></p>
[if !supportLists]17. [endif]<p><font size="3"> myPrivateVar ++;</font></p>
[if !supportLists]18. [endif]<p><font size="3"> // 调用私有函数</font></p>
[if !supportLists]19. [endif]<p><font size="3"> myPrivateMethod(bar);</font></p>
[if !supportLists]20. [endif]<p><font size="3"> },</font></p>
[if !supportLists]21. [endif]<p><font size="3"> // 公有方法二</font></p>
[if !supportLists]22. [endif]<p><font size="3"> myPublicFunction2: function () {</font></p>
[if !supportLists]23. [endif]<p><font size="3"> console.log("success");</font></p>
[if !supportLists]24. [endif]<p><font size="3"> }</font></p>
[if !supportLists]25. [endif]<p><font size="3"> };</font></p>
[if !supportLists]26. [endif]<p><font size="3"> }) ();</font></p>
console.log(myNameSpace.myPrivateVar); // undefined
[if !supportLists]1. [endif]
[if !supportLists]2. [endif]<p><font size="3"> console.log(myNameSpace.myPrivateVar); // undefined</font></p>
[if !supportLists]3. [endif]<p><font size="3"> console.log(myNameSpace.myPublicVar); // foo</font></p>
[if !supportLists]4. [endif]<p><font size="3"> console.log(myNameSpace.myPublicFunction); // Function</font></p>
[if !supportLists]5. [endif]<p><font size="3"> myNameSpace.myPublicFunction2(); // success</font></p>
[if !supportLists]6. [endif]<p><font size="3"> myNameSpace.myPublicFunction("i am first"); // i am first</font></p>
网友评论