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 相关文章推荐
JavaScript中“+=”的应用
Feb 02 Javascript
Javascript 个人笔记(没有整理,很乱)
Jul 07 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
Dec 08 Javascript
简述Matlab中size()函数的用法
Mar 20 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
jQuery下拉菜单的实现代码
Nov 03 Javascript
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
uni app仿微信顶部导航条功能
Sep 17 Javascript
JavaScript变量Dom对象的所有属性
Apr 30 Javascript
openlayers4.6.5实现距离量测和面积量测
Sep 25 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/11/25 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP模板解析类实例
2015/07/09 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
python set内置函数的具体使用
2019/07/02 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python 异步async库的使用说明
2020/05/04 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
商场消防演习方案
2014/02/12 职场文书
小学见习报告
2014/10/31 职场文书
电影雷锋观后感
2015/06/10 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Nginx 匹配方式
2022/05/15 Servers
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis