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 相关文章推荐
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
js实现动态改变字体大小代码
Jan 02 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
JavaScript截取、切割字符串的技巧
Jan 07 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
关于微信上网页图片点击全屏放大效果
Dec 19 Javascript
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 jQuery
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 Javascript
vue实现购物车抛物线小球动画效果的方法详解
Feb 13 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php保存信息到当前Session的方法
2015/03/16 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
php 多文件上传的实现实例
2016/10/23 PHP
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
详解如何较好的使用js
2016/12/16 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
司机岗位职责
2013/11/15 职场文书
三年级小学生评语
2014/04/22 职场文书
健康状况证明书
2014/11/26 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
python 网络编程要点总结
2021/06/18 Python
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL