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 相关文章推荐
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
JS控制阿拉伯数字转为中文大写示例代码
Sep 04 Javascript
前台js对象在后台转化java对象的问题探讨
Dec 20 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
详解JavaScript编程中的数组结构
Oct 24 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
JavaScript引用类型Function实例详解
Aug 09 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 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新手上路(二)
2006/10/09 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php socket通信简单实现
2016/11/18 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Node 模块原理与用法详解
2020/05/13 Javascript
Python程序设计入门(3)数组的使用
2014/06/16 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
python自动化生成IOS的图标
2018/11/13 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
不打扫卫生检讨书
2014/02/12 职场文书
购房意向书范本
2014/04/01 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
《春晓》教学反思
2014/04/20 职场文书
2015年教师节慰问信
2015/03/23 职场文书
2015年招生工作总结
2015/05/04 职场文书
MySQL批量更新不同表中的数据
2022/05/11 MySQL