您好,登錄后才能下訂單哦!
這篇“Javascript設計模式Revealing Module揭示模式怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Javascript設計模式Revealing Module揭示模式怎么實現”文章吧。
該模式能夠在私有范圍內簡單定義所有的函數和變量,并返回一個匿名對象, 它擁有指向私有函數的指針,該函數是他希望展示為公有的方法。
示例:
<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揭示模式怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。