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隐藏控件的方法
Sep 21 Javascript
js优化针对IE6.0起作用(详细整理)
Dec 25 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 Javascript
Angular 应用技巧总结
Sep 14 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
Dec 19 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
Apr 14 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
一些星际专用术语解释
2020/03/04 星际争霸
PHP中动态显示签名和ip原理
2007/03/28 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
js CSS操作方法集合
2008/10/31 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python实现针对中文排序的方法
2017/05/09 Python
Sublime开发python程序的示例代码
2018/01/24 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Python3 修改默认环境的方法
2019/02/16 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
元旦晚会感言
2014/03/12 职场文书
安全检查汇报材料
2014/12/26 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书