JavaScript设计模式之缓存代理模式原理与简单用法示例


Posted in Javascript onAugust 07, 2018

本文实例讲述了JavaScript设计模式之缓存代理模式原理与简单用法。分享给大家供大家参考,具体如下:

一、原理:

缓存代理可以为一些开销大的运算结果提供暂时的存储,在下次运算时,如果传递进来的参数跟之前的一致,则可以直接返回前面存储的运算结果,提供效率以及节省开销。

二、实例:

var mult = function(){
  console.log('开始计算乘机');
  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);
  }
})();
proxyMult( 1,2,3,4); //输出:24
proxyMult( 1,2,3,4); //输出:24

三、解析:

通过缓存代理模式,可将决定权交给代理函数对象proxyMult,而mult函数可以专注于自身的职责。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
js中hash和ico的关联分析
Feb 05 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
js实现基于正则表达式的轻量提示插件
Aug 29 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
node.js实现爬虫教程
Aug 25 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
Jun 02 Javascript
使用bootstrap插件实现模态框效果
May 10 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
深入浅析var,let,const的异同点
Aug 07 #Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 #Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 #Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 #Javascript
JS插件clipboard.js实现一键复制粘贴功能
Dec 04 #Javascript
js实现图片上传并预览功能
Aug 06 #Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 #Javascript
You might like
PHP 图片文件上传实现代码
2010/12/29 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP实现微信发红包程序
2015/08/24 PHP
PHP自定义错误用法示例
2016/09/28 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
PHP实现简单登录界面
2019/10/23 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
2016/12/23 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
从零学Python之hello world
2014/05/21 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
合作意向书格式及范文
2014/03/31 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
python数字图像处理:图像简单滤波
2022/06/28 Python