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 相关文章推荐
解决遍历时Array.indexOf产生的性能问题
Jul 03 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
jquery右下角自动弹出可关闭的广告层
May 08 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 Javascript
微信小程序实现无限滚动列表
May 29 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 Javascript
利用JS判断元素是否为数组的方法示例
Jan 08 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
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
python conda操作方法
2019/09/11 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
会计辞职信范文
2014/01/15 职场文书
周年庆典答谢词
2015/01/20 职场文书
留学推荐信中文范文
2015/03/26 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python