文章目录
- 通过两个对象轮换,按照是否访问实现内容长久保存
- 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); }}};
}