<html> <head> </head> <body> <h1>Design Patterns in JavaScript: Module, Revealing Module</h1> <div id="root"> </div> <script type="text/javascript"> "use strick"; /* Immediately Invoked functions (function(){ //your code here //all function and variables //scoped to this function }()); var module=(function(){ //your code here //all function and variables //scoped to this function }()); */ var conterModule=(function(){ var counter=0; return{ getCounter:function(){ return counter; }, incrementCounter:function(){ counter++; console.log("Counter after increment:",counter); }, decrementCounter:function(){ counter--; console.log("Counter after decrement:",counter); }, resetCounter:function(){ console.log("last Counter value:",counter); counter=0; console.log("Counter after reset:",counter); } } })(); console.log("Counter module:",conterModule); conterModule.incrementCounter(); conterModule.incrementCounter(); conterModule.decrementCounter(); conterModule.incrementCounter(); conterModule.resetCounter(); var randomCounterModule=(function(){ var randomCounter=0; function getRandomNumber(){ return Math.floor(Math.random()*10); } function logCounterValue(message){ console.log(message,randomCounter); } return{ getCounter:function(){ return randomCounter; }, incrementCounter:function(){ randomCounter=randomCounter+getRandomNumber(); logCounterValue("Counter after increment:"); }, decrementCounter:function(){ randomCounter=randomCounter-getRandomNumber(); logCounterValue("Counter after decrement:"); }, randomlyIncrementCounter:function(){ var number=getRandomNumber(); if(number%2==0){ this.incrementCounter(); }else{ this.decrementCounter(); } }, resetCounter:function(){ logCounterValue("last Counter value:"); randomCounter=0; logCounterValue("Counter after reset:"); } } })(); console.log("Random counter module",randomCounterModule); randomCounterModule.incrementCounter(); randomCounterModule.incrementCounter(); randomCounterModule.decrementCounter(); randomCounterModule.incrementCounter(); randomCounterModule.decrementCounter(); randomCounterModule.resetCounter(); randomCounterModule.randomlyIncrementCounter(); //Revealing Module, var counterModule2=(function(){ var counter=0; function incrementCounter(){ counter++; console.log("Counter after increment:",counter); } function decrementCounter(){ counter--; console.log("Counter after decrement:",counter); } function resetCounter(){ console.log("last Counter value:",counter); counter=0; console.log("Counter after reset:",counter); } return{ increment:incrementCounter, reset:resetCounter, decrement:decrementCounter } })(); console.log("counter Module2",counterModule2); counterModule2.increment(); counterModule2.increment(); counterModule2.increment(); counterModule2.reset(); counterModule2.decrement(); counterModule2.increment() counterModule2.decrement(); //best practies var randomCounterModule2 = (function () { var randomCounter = 0; var randomNumber = privateGetRandomNumber(); function privateGetRandomNumber() { return Math.floor(Math.random() * 10); } function privatelogCounterValue(message) { console.log(message, randomCounter); } function publicIncrementCounter() { randomCounter = randomCounter + randomNumber; privatelogCounterValue("Counter after increment: "); } function publicDecrementCounter() { randomCounter = randomCounter - randomNumber; privatelogCounterValue("Counter after decrement: "); } function publicRandomlyIncrementOrDecrement() { var number = privateGetRandomNumber(); if (number % 2 == 0) { publicIncrementCounter(); } else { publicDecrementCounter(); } } return { randomNumberProperty: randomNumber, increment: publicIncrementCounter, decrement: publicDecrementCounter, randomIncrementOrDecrement: publicRandomlyIncrementOrDecrement }; })(); console.log("Random counter module: ", randomCounterModule2); randomCounterModule2.increment(); randomCounterModule2.increment(); randomCounterModule2.decrement(); randomCounterModule2.randomIncrementOrDecrement(); console.log("Current increment/decrement value: ", randomCounterModule2.randomNumberProperty); randomCounterModule2.randomNumberProperty = 10 console.log("Updated increment/decrement value: ", randomCounterModule2.randomNumberProperty); console.log("Random counter module: ", randomCounterModule2); randomCounterModule2.increment(); </script> </body> </html>
原文地址:http://www.cnblogs.com/jchblog/p/16799480.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性