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 相关文章推荐
动态添加js事件实现代码
Mar 12 Javascript
基于jQuery图片平滑连续滚动插件
Apr 27 Javascript
javascript globalStorage类代码
Jun 04 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
Sep 03 Javascript
使用IE6看老赵的博客 jQuery初探
Jan 17 Javascript
把input初始值不写value的具体实现方法
Jul 04 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
js判断输入框不能为空格或null值的实现方法
Mar 02 Javascript
vue中v-for循环给标签属性赋值的方法
Oct 18 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
希特勒经典演讲稿
2014/05/19 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书