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 相关文章推荐
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
微信小程序动态的加载数据实例代码
Apr 14 Javascript
AngularJS 打开新的标签页实现代码
Sep 07 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
JS实现打砖块游戏
Feb 14 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动态生成VRML网页
2006/10/09 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
vue项目中使用百度地图的方法
2018/06/08 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python中模块string.py详解
2017/03/12 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
如何在python中实现随机选择
2019/11/02 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
python递归函数用法详解
2020/10/26 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
行政主管岗位职责
2013/11/18 职场文书
工作人员思想汇报
2014/01/09 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
社区服务活动总结
2014/05/07 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书