成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript設(shè)計模式學(xué)習(xí)筆記之代理模式

big_cat / 3311人閱讀

摘要:代理模式代理模式是為一個對象提供一個代用品或者占位符以便控制對它的訪問引入代理模式,其實是為了實現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計原則。

代理模式

代理模式是為一個對象提供一個代用品或者占位符, 以便控制對它的訪問

引入代理模式,其實是為了實現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計原則。

虛擬代理

將一些開銷很大的對象, 延遲到正真需要的時候執(zhí)行

        // 針對大圖 增加loading圖
        // 創(chuàng)建 img
        var myImage = (function () {
            var imgNode = document.createElement("img");

            document.body.appendChild(imgNode);

            return {
                // 直接設(shè)置 img 的src
                setSrc: function (src) {
                    imgNode.src = src;
                }
            }
        })();

        // 代理對象
        var proxyImage = (function () {
            var img = new Image();
            img.onload = function () {
                // 在代理中等到圖片加載完在設(shè)置正真的圖片地址
                myImage.setSrc(this.src);
            };

            return {
                setSrc: function (src) {
                    myImage.setSrc("./loading.jpg");
                    img.src = src;
                }
            }
        })();

        proxyImage.setSrc("https://xxx.com/realImage.png")
緩存代理

可以為一些開銷大的運算結(jié)果提供暫時的存儲

    // 體現(xiàn)了 單一職責(zé)原則,
    // 原函數(shù)
    var multi = function () {
        var a = 1;
        for (var i = 0, l = arguments.length; i < l; i++) {
            a = a * arguments[i];
        }
        console.log(a);
        return a;
    }

    // 代理函數(shù)
    var proxyMulti = (function () {
        var cache = {};
        return function () {
            var args = Array.prototype.join.call(arguments, ",");
            if (args in cache) {
                return cache[args];
            }
            return cache[args] = multi.apply(this, arguments);
        }
    })();

    proxyMulti(1, 2, 3, 4, 5);
    proxyMulti(1, 2, 3, 4, 5);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109255.html

相關(guān)文章

  • javascript設(shè)計模式學(xué)習(xí)筆記單例模式

    摘要:單例模式單例模式就是保證一個類僅有一個實例并提供一個訪問它的全局訪問點其最大的特點就是永遠(yuǎn)只返回一個實例實例通過來獲取類的唯一對象其缺點也明顯增加了類的不透明性透明的單例模式最終會被返回使用代理實現(xiàn)單例模式將負(fù)責(zé)管理單例的邏輯移到了代理類中 單例模式 單例模式 就是保證一個類僅有一個實例, 并提供一個訪問它的全局訪問點. 其最大的特點就是 永遠(yuǎn)只返回一個實例 var Sin...

    xiaolinbang 評論0 收藏0
  • JS代理模式JavaScript設(shè)計模式與開發(fā)實踐》閱讀筆記

    摘要:保護代理和虛擬代理保護代理當(dāng)有許多需求要向某對象發(fā)出一些請求時,可以設(shè)置保護代理,通過一些條件判斷對請求進(jìn)行過濾。虛擬代理在程序中可以能有一些代價昂貴的操作。而虛擬代理是最常用的一種代理模式。 代理模式 代理模式是為一個對象提供一個代用品或占位符,以便控制對它的訪問。 保護代理和虛擬代理 保護代理:當(dāng)有許多需求要向某對象發(fā)出一些請求時,可以設(shè)置保護代理,通過一些條件判斷對請求進(jìn)行過濾。...

    mist14 評論0 收藏0
  • 正則表達(dá)式

    摘要:最全正則表達(dá)式總結(jié)驗證號手機號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗,進(jìn)行擴展延伸,同時指出書里的一些問題。將會討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時器等話題。1. 安全的類型檢測...

    yibinnn 評論0 收藏0
  • javascript設(shè)計模式學(xué)習(xí)筆記命令模式

    摘要:命令模式指的是一個執(zhí)行某些特定事情的指令設(shè)計模式的主題總是把不變的事物和變化的事物分離開來在中函數(shù)作為一等對象所以命令模式其實是回調(diào)函數(shù)的一個面向?qū)ο蟮奶娲吩O(shè)置命令命令集合刷新菜單界面命令觸發(fā)條件接受者綁定命令 命令模式 指的是一個執(zhí)行某些特定事情的指令 設(shè)計模式的主題: 總是把不變的事物和變化的事物分離開來 在javascript 中, 函數(shù)作為一等對象, 所以, 命令模式其實是...

    MobService 評論0 收藏0
  • javascript設(shè)計模式學(xué)習(xí)筆記迭代器模式

    摘要:迭代器模式順序訪問一個對象的對象的內(nèi)部可分為內(nèi)部迭代器和外部迭代器內(nèi)部迭代器就是常見的或者外部迭代器實現(xiàn)了簡單實現(xiàn) 迭代器模式 順序訪問一個對象的 對象的內(nèi)部 可分為內(nèi)部迭代器 和 外部迭代器 內(nèi)部迭代器 就是常見的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...

    Jason_Geng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<