JavaScript 设计模式 之 代理模式
日期: 2017-09-04 浏览量: 3117
代理模式是为对象提供一个代用品或占位符,以便控制对它的访问。
代理模式的关键是,当客户端不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户端实际上访问的是替身对象。替身对象对请求做出一些处理之后,在把请求转交给本体对象。
例子1:代理实现图片预加载 (虚拟代理)
var myImg = (function(){ var image = document.createElement('img'); document.body.appendChild(image); return { setSrc: function(src){ image = src; } } })(); var proxyImg = (function(){ var img = new Image; img.onload = function(){ myImg.setSrc(this.src); } return { setSrc : function(src){ myImg.setSrc('file:// D:/img/1.jpg'); img.src = src; } } })(); proxyImg.setSrc('http://imgcache.qq.com/photo/123.jpg');
例子2:计算乘积 (缓存代理)
//创建乘积函数 var mult = function(){ var a=1; for(var i= 0,l = arguments.length;i<l;i++){ a= a*arguments[i]; } return a; }; //加入缓存代理函数 var proxyMult = (function(){ var cache = {}; return function(){ var args = Array.prototype.join.call(arguments,''); if(args in cache){ return cache[args]; } return cache[args] = mult.apply(this, arguments); } })();
缓存代理用于ajax 异步请求数据。在项目中遇到分页需求,同一页的数据理论上只需要去后台拉去一次,这些拉去的数据在某个地方缓存起来之后,下次请求在同一页的时候,便可以直接使用之前的数据。
人活着,其实就是一种心态,你若觉得快乐,幸福无处不在;你为自己悲鸣,世界必将灰暗。
阅读排行
最新文章
联系方式
- 邮箱:m18811126599@163.com
- QQ:896956692