亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript設計模式學習筆記之代理模式

big_cat / 3358人閱讀

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

代理模式

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

引入代理模式,其實是為了實現(xiàn)單一職責的面向對象設計原則。

虛擬代理

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

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

            document.body.appendChild(imgNode);

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

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

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

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

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

    // 體現(xiàn)了 單一職責原則,
    // 原函數(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);

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/109255.html

相關文章

  • javascript設計模式學習筆記單例模式

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

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

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

    mist14 評論0 收藏0
  • 正則表達式

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

    yibinnn 評論0 收藏0
  • javascript設計模式學習筆記命令模式

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

    MobService 評論0 收藏0
  • javascript設計模式學習筆記迭代器模式

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

    Jason_Geng 評論0 收藏0

發(fā)表評論

0條評論

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