虚拟代理实现图片预加载
预加载图片在Web开发中十分常用,其通过异步的方式加载图片,利用一张loading图片占位。等图片加载好之后把图片填充到img节点中。
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('loading.gif') img.src = src } }})()proxyImage.setSrc('realImage.jpg')
通过proxyImage
间接的访问了MyImage
。proxyImage
控制了客户对MyImage
的访问,并且在此过程中加入了一些额外的操作,比如在真正的图片加载好之前,先把img节点的src设置为一张loading图片。