1 function createCache(){ 2 //cache对象中以键值对的形式存储我们的缓存数据 3 var cache = {}; 4 //index数组中该存储键,这个键是有顺序,可以方便我们做超出容量的处理 5 var index = []; 6 return function (key, value) { 7 //如果传了值,就说名是设置值 8 if(value !== undefined){ 9 //将数据存入cache对象,做缓存 10 cache[key] = value; 11 //将键存入index数组中,以和cache中的数据进行对应 12 index.push(key); 13 14 //判断缓存中的数据数量是不是超出了限制 15 if(index.length >= 50){ 16 //如果超出了限制 17 //删除掉最早存储缓存的数据 18 //最早存入缓存的数据的键是在index数组的第一位 19 //使用数组的shift方法可以获取并删除掉数组的第一个元素 20 var tempKey = index.shift(); 21 //获取到最早加入缓存的这个数据的键,可以使用它将数据从缓存各种删除 22 delete cache[tempKey]; 23 } 24 } 25 //如果没有传值,只穿了键,那就是获取值 26 // else{ 27 // return cache[key]; 28 // } 29 return cache[key]; 30 } 31 }
jQuery的缓存容器
1 function createCache() { 2 var keys = []; 3 function cache( key, value ) { 4 // 使用(key + " ") 是为了避免和原生(本地)的原型中的属性冲突 5 if ( keys.push( key + " " ) > 3 ) { 6 // 只保留最新存入的数据 7 delete cache[ keys.shift() ]; 8 } 9 // 1 给 cache 赋值 10 // 2 把值返回 11 return (cache[ key + " " ] = value); 12 } 13 return cache; 14 }