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 相关文章推荐
JavaScript 基于原型的对象(创建、调用)
Oct 16 Javascript
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
jquery选择器使用详解
Apr 08 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
JS+CSS相对定位实现的下拉菜单
Oct 06 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
javascript 单例模式详解及简单实例
Feb 14 Javascript
详解如何使用babel进行es6文件的编译
May 29 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
JS原生实现轮播图的几种方法
Mar 23 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
jQuery实现简单全选框
2020/09/13 jQuery
python zip文件 压缩
2008/12/24 Python
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
Python 字典dict使用介绍
2014/11/30 Python
解密Python中的描述符(descriptor)
2015/06/03 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
python创建n行m列数组示例
2019/12/02 Python
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
文秘专业大学生求职信
2013/11/10 职场文书
《桥》教学反思
2014/04/09 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
品质标语大全
2014/06/21 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
关于公司年会的开幕词
2016/03/04 职场文书