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 相关文章推荐
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
微信小程序 开发之快递查询功能的实现
Jan 09 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 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/04/28 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
php格式化金额函数分享
2015/02/02 PHP
php动态绑定变量的用法
2015/06/16 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
学习ExtJS Window常用方法
2009/10/07 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
js获取form的方法
2015/05/06 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
先进集体获奖感言
2014/02/13 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android