美文网首页前端是万能的让前端飞Web前端之路
《JavaScript设计模式与开发实践》之代理模式

《JavaScript设计模式与开发实践》之代理模式

作者: 肆意木 | 来源:发表于2019-12-12 00:09 被阅读0次

    代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。

    保护代理: 控制不同权限的对象对目标对象的访问;

    虚拟代理: 把一些开销很大的代理,延迟到真正需要它的时候才去创建;

    缓存代理: 可以为一些开销大的运算结果提供暂时的存储,在下次运算时,如果传递进来的参数与之前一致,则可以直接返回前面存储的运算结果;

    防火墙代理: 控制网络资源的访问,保护主题不让“坏人”接近;

    远程代理: 为了一个对象在不同的地址空间提供局部代表,在 Java 中,远程代理可以是另一个虚拟机的对象。

    智能引用代理:取代了简单的指针,它在访问对象时执行一些附加操作,比如计算一个对象被引用的次数。

    写时复制代理:通常用于复制一个庞大对象的情况。写时复制代理延迟了复制的过程,
    当对象被真正修改时,才对它进行复制操作。写时复制代理是虚拟代理的一种变体,DLL
    (操作系统中的动态链接库)是其典型运用场景。


    Demo:下面重点讲一下 JS 中常用的虚拟代理

    用途:

    1. 图片预加载;
    2. 虚拟代理合并 HTTP 请求;
    3. 虚拟代理在惰性加载中应用。

    栗子(图片预加载):

    var myImage = (function(){
     var imgNode = document.createElement( 'img' );
     document.body.appendChild( imgNode );
     return {
     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( 'file:// /C:/Users/svenzeng/Desktop/loading.gif' );
     img.src = src;
     }
     }
    })();
    proxyImage.setSrc( 'http:// imgcache.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' ); 
    

    相关文章

      网友评论

        本文标题:《JavaScript设计模式与开发实践》之代理模式

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