中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javascript設計模式Revealing?Module揭示模式怎么實現

發布時間:2022-08-25 14:36:19 來源:億速云 閱讀:146 作者:iii 欄目:開發技術

這篇“Javascript設計模式Revealing Module揭示模式怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Javascript設計模式Revealing Module揭示模式怎么實現”文章吧。

1. 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>

優點:

  • 該模式很容易之處哪些函數和變量可被公開訪問,改善了可讀性。

  • 如果一個私有函數引用一個公有函數,在需要打補丁時,公有函數是不能被覆蓋的。 因為私有函數將繼續引用私有實現,該模式并不適用于公有成員,只使用函數。

2. Singleton 單例模式

單例模式,能夠限制類的實例化次數只能為一次。單例模式,在該實例不存在的情況下, 可以通過一個方法創建一個類來實現創建類的新實例;如果實例已經存在,它會簡單返回該對象的引用;

示例:

<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揭示模式怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红原县| 周口市| 临高县| 普宁市| 余庆县| 马尔康县| 武穴市| 芦溪县| 抚松县| 日照市| 余干县| 泾源县| 汨罗市| 平罗县| 永定县| 武陟县| 马龙县| 囊谦县| 沈阳市| 尤溪县| 兴宁市| 阳春市| 孟州市| 治县。| 天长市| 姜堰市| 安吉县| 木里| 迭部县| 庆城县| 武隆县| 团风县| 石楼县| 兴宁市| 麦盖提县| 南木林县| 如皋市| 敦煌市| 鄄城县| 崇信县| 塔河县|