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

代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 保护代理: 控制不同权限的对象对目标对象的访问; 虚拟代理: 把一些开销很大的代理,延迟到真正需要它的时候才去创建; 缓存代理: 可以为一些开销大的运算结果提供暂时的存储,在下次运算时,如果传递进来的参数与之前一致,则可以直接返回前面存储的运算结果; 防火墙代理: 控制网络资源的访问,保护主题不让“坏人”接近; 远程代理: 为了一个对象在不同的地址空间提供局部代表,在 Java 中,远程代理可以是另一个虚拟机的对象。 智能引用代理:取代了简单的指针,它在访问对象时执行一些附加操作,比如计算一个对象被引用的次数。 写时复制代理:通常用于复制一个庞大对象的情况。写时复制代理延迟了复制的过程, 当对象被真正修改时,才对它进行复制操作。写时复制代理是虚拟代理的一种变体,DLL (操作系统中的动态链接库)是其典型运用场景。 Demo:下面重点讲一下 JS 中常用的虚拟代理 用途: 图片预加载; 虚拟代理合并 HTTP 请求; 虚拟代理在惰性加载中应用。 栗子(图片预加载): 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技术分享原创和收集

发表评论 (审核通过后显示评论):

昵称:
邮箱:
内容: