美文网首页
Javascript 面向对象编程特训 - 2

Javascript 面向对象编程特训 - 2

作者: 求愚 | 来源:发表于2017-05-12 09:53 被阅读33次
Javascript 特训-2

今天把加载图片缓存的思路给梳理清楚,方便自己的作品集网站以后加载图片,更快速。尽量减少 html 结构,多用 js 来代替,方便后期维护。

图片加载思路,即当网站第一次加载图片后,留一个图片备份(即缓存),当网站第二次加载该图片时,如果有缓存,则直接加载缓存,减少再次加载该图片的消耗。

(function () {

    // 存缓存图片
    var imageCache = [];
    // 图片加载完后的回调函数
    var callBacks = [];

    // 加载函数
    function load(imageUrl) {
        // 判断是单个照片还是多个照片
        if (imageUrl instanceof Array) {
            imageUrl.forEach(function (url) {
                loadUrl(url);
            });
        }
        else {
            loadUrl(url);
        }
    }

    // 加载处理函数    
    function loadUrl(url) {
        // 有缓存,直接返回
        if (imageCache[url]) {
            return imageCache[url];
        }
        // 没有缓存,创建缓存
        else {
            var image = new Image();
            // 加载完成后,加入缓存数组
            image.onload = function () {
                imageCache[url] = image;

                // 所有图片加载完后,执行函数
                if (isReady()) {
                    callBacks.forEach(function (func) {
                        func();
                    });
                }
            }
            // 监听事件放在触发事件之前
            imageCache[url] = false;
            image.src = url;
        }
    }

    // 获取某个缓存图片
    function get(url) {
        return imageCache[url];
    }

    // 判断图片是否完全加载完,执行回调函数
    function isReady() {
        var ready = true;
        for (var img in imageCache) {
            if (!imageCache[img]) {
                ready = false;
                break;
            }
        }

        return ready;
    }

    // 加载执行函数
    function onReady(func) {
        callBacks.push(func);
    }

    window.Resources = {
        load: load,
        get: get,
        onReady: onReady,
        isReady: isReady
    };

})();

相关文章

  • Javascript 面向对象编程特训 - 2

    今天把加载图片缓存的思路给梳理清楚,方便自己的作品集网站以后加载图片,更快速。尽量减少 html 结构,多用 js...

  • 构造函数与 new 命令

    JavaScript 语言具有很强的面向对象编程能力,本章介绍 JavaScript 如何进行面向对象编程。 对象...

  • Javascript面向对象编程

    阮一峰文档备忘 Javascript 面向对象编程(一):介绍封装 Javascript 面向对象编程(二):介绍...

  • JS创建对象方案(一)

    5.1 JavaScript的面向对象 JavaScript其实支持多种编程范式的,包括函数式编程和面向对象编程:...

  • JS设计模式 -- 面向对象 -- 1 封装

    以下内容来自张荣铭《JavaScript设计模式》第2章。 两种编程风格 -- 面向过程与面向对象。 面向对象编程...

  • JavaScript学习笔记(一)

    Javascript面向对象 1. 面向对象编程介绍 1.1 两大编程思想 面向过程 & 面向对象 1.2 面向过...

  • JavaScript学习

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • javascript的面向对象

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • ajax

    1. 面向对象 javascript 具有面向过程,面向对象,函数式编程的特点 javascript 重要 原型/...

  • javascript 面向对象编程

    引自:阮一峰的博客Javascript面向对象编程(一):封装Javascript面向对象编程(二):构造函数的继...

网友评论

      本文标题:Javascript 面向对象编程特训 - 2

      本文链接:https://www.haomeiwen.com/subject/yjtztxtx.html