欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析Javascript設(shè)計(jì)模式Revealing?Module?揭示模式單例模式

 更新時間:2022年08月25日 10:46:58   作者:前端修羅場  
這篇文章主要為大家解析了Javascript設(shè)計(jì)模式Revealing?Module?揭示模式及Singleton單例模式示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. Revealing Module 揭示模式

該模式能夠在私有范圍內(nèi)簡單定義所有的函數(shù)和變量,并返回一個匿名對象, 它擁有指向私有函數(shù)的指針,該函數(shù)是他希望展示為公有的方法。

示例:

<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();
    }
    //將暴露的公有指針指向到私有函數(shù)和屬性上
    return {
            setName: publicSetName,
            greeting: publicvar,
            getName: publicGetName
    };
}();
myRevealingModule.setName("Paul Kinlan");
</script>

優(yōu)點(diǎn):

  • 該模式很容易之處哪些函數(shù)和變量可被公開訪問,改善了可讀性。
  • 如果一個私有函數(shù)引用一個公有函數(shù),在需要打補(bǔ)丁時,公有函數(shù)是不能被覆蓋的。 因?yàn)樗接泻瘮?shù)將繼續(xù)引用私有實(shí)現(xiàn),該模式并不適用于公有成員,只使用函數(shù)。

2. Singleton 單例模式

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

示例:

<script type="text/javascript">
var mySingleton = (function () {
        //實(shí)例保持了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 的實(shí)例,如果存在就返回,不存在就創(chuàng)建新實(shí)例
                getInstance: function() {
                        if(!instance) {
                                instance = init();
                        }
                        return instance;
                }
        };
})();
var singleA = mySingleton.getInstance();
var singleB = mySingleton.getInstance();
console.log(singleA.getRandomNumber()===singleB.getRandomNumber());//true
</script>

在實(shí)踐中,當(dāng)在系統(tǒng)中確實(shí)需要一個對象來協(xié)調(diào)其他對象時,>Singleton模式很有用。

示例:

<script type="text/javascript">
var SingletonTester = (function() {
        //options: 包含singleton所需配置信息的對象
        //var options = {name:"test",pointX:5};
        function Singleton(options) {
                //如果未提供options,則設(shè)置為空對象
                options = options || {};
                //為singleton設(shè)置一些屬性
                this.name = "SingletonTester";
                this.pointX = options.pointX || 6;
                this.pointY = options.pointY || 10;
        }
        //實(shí)例持有者
        var instance;
        //靜態(tài)變量和方法的模擬
        var _static = {
                name: "SingletonTester",
                //獲取實(shí)例的方法,返回singleton對象的singleton實(shí)例
                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設(shè)計(jì)模式Revealing Module 揭示模式單例模式的詳細(xì)內(nèi)容,更多關(guān)于JS 揭示模式單例模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序之picker日期和時間選擇器

    微信小程序之picker日期和時間選擇器

    本篇文章主要介紹了微信小程序之picker選擇器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 帶你理解JavaScript 原型原型鏈

    帶你理解JavaScript 原型原型鏈

    理解js中原型、原型鏈這個概念,絕對是幫助我們更深入學(xué)習(xí)js的必要一步,比如,如果js開發(fā)者想理解js繼承,new關(guān)鍵字原理,甚至封裝組件、優(yōu)化代碼,弄明白js中原型、原型鏈更是前提條件。本篇文章,用最簡潔的文字,清楚明白講解原型鏈相等關(guān)系和原型、原型鏈存在的意義
    2021-09-09
  • Javascript實(shí)現(xiàn)的分頁函數(shù)

    Javascript實(shí)現(xiàn)的分頁函數(shù)

    Javascript實(shí)現(xiàn)的分頁函數(shù)...
    2006-12-12
  • 用JS創(chuàng)建一個錄屏功能

    用JS創(chuàng)建一個錄屏功能

    這篇文章主要介紹了利用JS創(chuàng)建一個錄屏功能,創(chuàng)建這個功能錢我們首先創(chuàng)建一個HTML文件,包含記錄按鈕和一個播放標(biāo)簽,下面來看看創(chuàng)建的詳細(xì)過程
    2021-11-11
  • 微信小程序滾動Tab實(shí)現(xiàn)左右可滑動切換

    微信小程序滾動Tab實(shí)現(xiàn)左右可滑動切換

    這篇文章主要介紹了微信小程序滾動Tab實(shí)現(xiàn)左右可滑動切換的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • Javascript 跨域知識詳細(xì)介紹

    Javascript 跨域知識詳細(xì)介紹

    這篇文章主要介紹了Javascript 跨域知識詳細(xì)介紹的相關(guān)資料,并附簡單實(shí)例代碼,幫助大家理解,需要的朋友可以參考下
    2016-10-10
  • 微信小程序-getUserInfo回調(diào)的實(shí)例詳解

    微信小程序-getUserInfo回調(diào)的實(shí)例詳解

    這篇文章主要介紹了微信小程序-getUserInfo回調(diào)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 關(guān)于Javascript閉包與應(yīng)用的詳解

    關(guān)于Javascript閉包與應(yīng)用的詳解

    這篇文章主要介紹了關(guān)于Javascript閉包與應(yīng)用的詳解,文中有非常詳細(xì)的代碼示例.對正在學(xué)習(xí)js的伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解

    autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 實(shí)現(xiàn)基于飛書webhook監(jiān)聽github代碼提交

    實(shí)現(xiàn)基于飛書webhook監(jiān)聽github代碼提交

    這篇文章主要為大家介紹了實(shí)現(xiàn)基于飛書webhook監(jiān)聽github代碼提交示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評論