缓存cache
缓存就是将js代码中常用的数据存储起来来简化代码的执行过程
jQuery中的缓存
function createCache(){
var arr=[];
cache=function(k ,v){
if(arr.push(k+" ")>2){
delete cache[arr.shift()];
}
return cache[k+" "]=v;
}
return cache;
}
var mycache=createCache();
mycache("aaa","zhangsan");
mycache("name","lisi");
定义一个函数,返回值为另一个函数,在函数中定义一个数组来保存对象的长度(因为对象无法保存长度)
每次在有k键传入的时候,直接在数组中push加入k键,返回值为数组的长度,如果超过自定义的最大长度,则进入if
使用delete关键字来删除数组索引为0的k键所对应的值(使用shift()方法删除第一个元素并且返回删除的元素的值)
并且在设置属性的时候相应的在属性后面加上空格(或者别的也行,在获取值得时候也要加上),放置属性名和自带的属性名冲突
利用缓存来优化斐波拉契数列
function createCache(){
var index=[];
function cache(k,v){
if(index.push(k+" ")>10){
delete cache[index.shift()];
}
return cache[k+" "]=v;
}
return cache;
}
var fblqcache=new createCache();
function fblq(n){
if(n<=2){
return 1;
}
if(fblqcache[n+" "]==undefined){
fblqcache(n,fblq(n-1)+fblq(n-2));
}
return fblqcache[n+" "];
}
function fblq2(n){
if(n<=2){
return 1;
}
return fblq2(n-1)+fblq2(n-2);
}
console.log(fblq2(10));
console.log(fblq(10));