文章目录
通过两个对象轮换,按照是否访问实现内容长久保存 rollup 的缓存实现
export default function ( max ) { var num, curr, prev; var limit = max || 1 ; function keep ( key, value ) { if ( ++ num > limit) { prev = curr; reset ( 1 ) ; ++ num; } curr[ key] = value; } function reset ( isPartial ) { num = 0 ; curr = Object. create ( null ) ; isPartial || ( prev= Object. create ( null ) ) ; } reset ( ) ; return { clear : reset, has : function ( key ) { return curr[ key] !== void 0 || prev[ key] !== void 0 ; } , get : function ( key ) { var val = curr[ key] ; if ( val !== void 0 ) return val; if ( ( val= prev[ key] ) !== void 0 ) { keep ( key, val) ; return val; } } , set : function ( key, value ) { if ( curr[ key] !== void 0 ) { curr[ key] = value; } else { keep ( key, value) ; } } } ;
}