轻松掌握JavaScript代理模式

 更新时间:2016年08月26日 08:45:07   作者:苏福  
这篇文章主要帮助大家轻松掌握JavaScript代理模式,什么是代理模式?代理的用途,感兴趣的小伙伴们可以参考一下

在面向对象设计中,有一个单一职责原则,指就一个类(对象、函数)而言,应该仅有一个引起它变化的原因。如果一个对象承担了过多的职责,就意味着它将变得巨大,引起它变化的原因就多,它把这些职责耦合到了一起,这种耦合会导致程序难于维护和重构。 

这时候,我们可以把该对象(本体)的其中一部分职责分离出来给一些第三方对象去做,本体只管自己的一些核心职责,这些第三方对象就称作代理。代理对象可以作为对象(也叫“真正的主体”)的保护者,让真正的主体对象做尽量少的工作。在代理设计模式中,一个对象充当了另一个对象的接口的角色。 

通常代理和本体的接口应该保持一致性,这样当不需要代理的时候,用户可直接访问本体。 

当我们不方便直接访问一个对象时,就可以考虑给该对象招一个代理。 

代理可用于:图片预加载、合并HTTP请求(代理收集一定时间内的所有HTTP请求,然后一次性发给服务器)、惰性加载(通过代理处理和收集一些基本操作,然后仅在真正需要本体的时候才加载本体)、缓存代理(缓存请求结果、计算结果)等

例子1:图片预加载

 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('show.jpg');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 在小程序Canvas中使用measureText的方法示例

    在小程序Canvas中使用measureText的方法示例

    有时候我们在使用Canvas绘制一段文本时,会需要通过measureText()方法获取文本的宽度,本文主要介绍了在小程序Canvas中使用measureText的方法示例,需要的朋友可以参考下
    2018-10-10
  • JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结

    JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结

    尽管那需要用长串的、沉闷的不同分支代码来应付不同浏览器的日子已经过去,偶尔还是有必要做一些简单的区分和目标检测来确保某块代码能在用户的机器上正常运行。
    2010-06-06
  • html+css+js实现canvas跟随鼠标的小圆特效源码

    html+css+js实现canvas跟随鼠标的小圆特效源码

    这篇文章主要介绍了html+css+js实现canvas跟随鼠标的小圆特效源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 通过JS获取Request.QueryString()参数的值实现方法

    通过JS获取Request.QueryString()参数的值实现方法

    下面小编就为大家带来一篇通过JS获取Request.QueryString()参数的值实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • JS中parseInt()和map()用法分析

    JS中parseInt()和map()用法分析

    这篇文章主要介绍了JS中parseInt()和map()用法,结合实例形式分析了parseInt()和map()方法的功能、参数、具体用法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • 深入理解javascript中的 “this”

    深入理解javascript中的 “this”

    本文主要介绍了javascript中“this”的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 解析John Resig Simple JavaScript Inheritance代码

    解析John Resig Simple JavaScript Inheritance代码

    上网也查了一下对些的理解说的都不是很清楚. 在翻阅的同时找到了一篇 分析这篇文章的文章 哈哈 分析的很详细. (Join Resig 大师的 "Simple Inheritance" 使用了很多有意思的技巧) 如果你有时间, 并对此感兴趣不访好好看看. 我相信多少会有所收益的.
    2012-12-12
  • ES6记录异步函数的执行时间详解

    ES6记录异步函数的执行时间详解

    在这篇文章里,我会实现一个可重用的函数来处理 JavaScript 延时异步操作。有需要的小伙伴们可以参考借鉴,下面来一起看看。
    2016-08-08
  • js实现文字在按钮上滚动的方法

    js实现文字在按钮上滚动的方法

    这篇文章主要介绍了js实现文字在按钮上滚动的方法,涉及javascript动态定时操作页面元素样式的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • javascript实现的多个层切换效果通用函数实例

    javascript实现的多个层切换效果通用函数实例

    这篇文章主要介绍了javascript实现的多个层切换效果通用函数,涉及javascript针对页面元素样式的遍历与操作技巧,需要的朋友可以参考下
    2015-07-07

最新评论