<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
該模式能夠在私有範圍內簡單定義所有的函數和變數,並返回一個匿名物件, 它擁有指向私有函數的指標,該函數是他希望展示為公有的方法。
範例:
<script> var myRevealingModule = function () { var privateVar = "Ren Cherry", publicVar = "Hey there"; function privateFunction() { console.log("Name:"+privateVar); } function publicSetName(strName) { privateName = strName; } function publicGetName() { privateFunction(); } //將暴露的公有指標指向到私有函數和屬性上 return { setName: publicSetName, greeting: publicvar, getName: publicGetName }; }(); myRevealingModule.setName("Paul Kinlan"); </script>
優點:
單例模式,能夠限制類的範例化次數只能為一次。單例模式,在該範例不存在的情況下, 可以通過一個方法建立一個類來實現建立類的新範例;如果範例已經存在,它會簡單返回該物件的參照;
範例:
<script type="text/javascript"> var mySingleton = (function () { //範例保持了singleton 的一個參照 var instance; function init() { //singleton //私有方法和變數 function privateMethod() { console.log("I am private"); } var privateVariable = "I am also private"; var privateRandomNumber = Math.random(); return { //公有方法和變數 publicMethod: function () { console.log("The public can see me!"); }, publicProperty: "I am also public", getRandomNumber: function() { return privateRandomNumber; } }; }; return { //獲取singleton 的範例,如果存在就返回,不存在就建立新範例 getInstance: function() { if(!instance) { instance = init(); } return instance; } }; })(); var singleA = mySingleton.getInstance(); var singleB = mySingleton.getInstance(); console.log(singleA.getRandomNumber()===singleB.getRandomNumber());//true </script>
在實踐中,當在系統中確實需要一個物件來協調其他物件時,>Singleton模式很有用。
範例:
<script type="text/javascript"> var SingletonTester = (function() { //options: 包含singleton所需設定資訊的物件 //var options = {name:"test",pointX:5}; function Singleton(options) { //如果未提供options,則設定為空物件 options = options || {}; //為singleton設定一些屬性 this.name = "SingletonTester"; this.pointX = options.pointX || 6; this.pointY = options.pointY || 10; } //範例持有者 var instance; //靜態變數和方法的模擬 var _static = { name: "SingletonTester", //獲取範例的方法,返回singleton物件的singleton範例 getInstance: function(options) { if(instance === undefined) { instance = new Singleton(options); } return instance; }; return _static; } })(); var singletonTest = SingletonTester.getInstance({ pointX: 5 }); console.log(singletonTest.pointX);//5 </script>
以上就是解析Javascript設計模式Revealing Module 揭示模式單例模式的詳細內容,更多關於JS 揭示模式單例模式的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45