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实现时间格式化的方式汇总
Oct 16 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
xtemplate node.js 的使用方法实例解析
Aug 22 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
微信小程序实现页面浮动导航
Jan 28 Javascript
Nuxt 项目性能优化调研分析
Nov 07 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php中explode与split的区别介绍
2012/10/03 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
use jscript List Installed Software
2007/06/11 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
python编写简单爬虫资料汇总
2016/03/22 Python
python rsa 加密解密
2017/03/20 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
python中几种自动微分库解析
2019/08/29 Python
django实现类似触发器的功能
2019/11/15 Python
pytorch实现查看当前学习率
2020/06/24 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
mysql sock文件存储了什么信息
2022/07/15 MySQL