jQuery缓存实现的分析-及源码解读
来源:互联网 发布:唱歌调音软件 编辑:程序博客网 时间:2024/06/06 14:13
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> //eleCache //typeCache //classCache //eventCache function createCache(){ //cache对象中以键值对的形式存储我们的缓存数据 var cache = {}; //index数组中该存储键,这个键是有顺序,可以方便我们做超出容量的处理 var index = []; return function (key, value) { //如果传了值,就说名是设置值 if(value !== undefined){ //将数据存入cache对象,做缓存 cache[key] = value; //将键存入index数组中,以和cache中的数据进行对应 index.push(key); //判断缓存中的数据数量是不是超出了限制 if(index.length >= 50){ //如果超出了限制 //删除掉最早存储缓存的数据 //最早存入缓存的数据的键是在index数组的第一位 //使用数组的shift方法可以获取并删除掉数组的第一个元素 var tempKey = index.shift(); //获取到最早加入缓存的这个数据的键,可以使用它将数据从缓存各种删除 delete cache[tempKey]; } } //如果没有传值,只穿了键,那就是获取值// else{// return cache[key];// } return cache[key]; } } var eleCache = createCache(); eleCache("name","张小三"); console.log(eleCache("name")); var typeCche = createCache();//------------------------源码解读---------------------------------------- function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) // 使用(key + " ") 是为了避免和原生(本地)的原型中的属性冲突 if ( keys.push( key + " " ) > 3 ) { // Only keep the most recent entries // 只保留最新存入的数据 delete cache[ keys.shift() ]; } // 1 给 cache 赋值 // 2 把值返回 return (cache[ key + " " ] = value); // cache[key + ""] = value; // return value; } return cache; } var typeCache = createCache(); typeCache("monitor"); console.log(typeCache["monitor" + " "]); typeCache("monitor","张学友"); console.log(typeCache["monitor1" + " "]); typeCache("monitor","刘德华"); console.log(typeCache["monitor2" + " "]); typeCache("monitor3","彭于晏"); console.log(typeCache["monitor3 "]);// console.log(typeCache["monitor "]); </script></head><body></body></html>
阅读全文
0 0
- jQuery缓存实现的分析-及源码解读
- jQuery的ajax实现机制--源码解读
- Retrofit 源码解读之离线缓存策略的实现
- Retrofit 源码解读之离线缓存策略的实现
- Retrofit 源码解读之离线缓存策略的实现
- JQuery中缓存实现的分析
- DirectFB 源码解读之双缓存实现
- DirectFB 源码解读之双缓存实现
- DirectFB 源码解读之双缓存实现
- DirectFB 源码解读之双缓存实现
- GreenDao源码分析及使用GreenDao实现静态数据缓存
- (源码分析)Android-Universal-Image-Loader (图片异步加载缓存库)的源码解读
- jQuery源码解读---执行过程分析
- jquery find()解析示例及源码解读
- CTP源码分析8 CTP路由引擎结构及源码分析(二)----源码实现解读(一)
- java PriorityQueue 原理分析及源码解读
- Jquery源码分析之一:概述及jquery对象的构建
- Universal-Image-Loader源码分析,及常用的缓存策略
- 幂等性
- 目标跟踪算法——KCF入门详解
- 我的前端里程碑
- vue切换端口
- 日志服务十大经典问题
- jQuery缓存实现的分析-及源码解读
- 数据结构与算法一:选择排序
- shellScript之if_elif_else语句
- PHP中数组模糊匹配字符串
- 还在用密码登录 ECS?ECS 控制台更安全的 SSH 密钥对 来了
- shellScript之case语句
- 学习的步伐(三)Kotlin TabLayout+Viewpager+Fragment实现基础框架
- 进程和线程
- 从入门型到企业型:云服务器开放共享型到独享型规格升级变配