代理模式是一种对程序对象进行控制性访问的一类解决方案。 引入代理模式,其实是为了实现单一职责的面向对象设计原则。 单一职责其实就是指在一个类中(js中通常指对象和函数等),应仅有一个引起它变化的原因。这样会帮助程序设计具有良好的健壮和高内聚特性,从而当变化发生时,程序设计会尽量少的受到意外破坏。 代理模式有多种方法,保护代理、远程代理、虚拟代理、缓存代理等。 但在javascript中,代理模式最常用到的两种方法是虚拟代理和缓存代理。 虚拟代理 在理解虚拟代理时,可以将其想象为一个经纪人,客户程序需要通过这个虚拟代理(经纪人)来调用本体对象的方法。 虚拟代理示例demo1: 图片loading