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 firefox兼容ie的dom方法脚本
May 18 Javascript
ExtJs grid行 右键菜单的两种方法
Jun 19 Javascript
jquery插件 autoComboBox 下拉框
Dec 22 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
微信小程序 Flex布局详解
Oct 09 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
Bootstrap table使用方法记录
Aug 23 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
Oct 26 Javascript
完美解决linux下node.js全局模块找不到的情况
May 16 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 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 CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python基础教程之匿名函数lambda
2017/01/17 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
Python self用法详解
2020/11/28 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
信息部岗位职责
2013/11/12 职场文书
寄语十八大感言
2014/02/07 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
从原生JavaScript到React深入理解
2022/07/23 Javascript