虚拟代理实现图片预加载
// 虚拟代理实现图片预加载 let myImage = (function(){ let imgNode = document.createElement('img'); document.body.appendChild(imgNode); return { setSrc: function (src) { imgNode.src = src } } })() let proxyImage = (function(){ let img = new Image; img.onload = function(){ myImage.setSrc (this.src) } return { setSrc: function(src){ myImage.setSrc('file:///E:/手里上整理出来的照片/网上收集的照片/山川河流.jpg'); img.src = src } } })() proxyImage.setSrc('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1560840791&di=976399fb61f71f4597347ca330dcf84a&imgtype=jpg&er=1&src=http%3A%2F%2Ffile.elecfans.com%2Fweb1%2FM00%2F81%2FF7%2Fo4YBAFw9O2aAIU4lAAKUIw4770I426.png') 复制代码
虚拟代理合并 HTTP 请求
1 2 3 4 6 7 8 9 复制代码
缓存代理
let mult = function(){ console.log('开始计算乘积'); var a = 1; for(var i = 0, l = arguments.length; i < l; i++){ a = a * arguments[i] } return a; }; let proxyMult = (function(){ let cache = {}; return function(){ let args = Array.prototype.join.call(arguments, ',') if (args in cache) { return cache[ args ] } return cache[ args ] = mult.apply( this, arguments) } })(); proxyMult(1,2,3,4) // 24 proxyMult(1,2,3,4) // 24复制代码
该资料来源曾探著的《设计模式与开发实践》