分析jq中缓存的案例
jQuery流行框架在程序界还是非常火的,下面我们通过扒开jquery-1.11.1.js 的源码,来分析它是如何实现一些数据缓存的。
下面就是jQuery里头的createCache的源码,
/**
* Create key-value caches of limited size
* @returns {Function(string, Object)} Returns the Object data after storing it on itself with
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
* deleting the oldest entry
*/
function createCache() {
var keys = [];
function cache( key, value ) {
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
if ( keys.push( key + " " ) > Expr.cacheLength ) {
// Only keep the most recent entries
delete cache[ keys.shift() ];
}
return (cache[ key + " " ] = value);
}
return cache;
}
一时间是不是看的有点晕呢?我试着从最基本的代码案例来推演出这个案例,毕竟这个缓存案例还是非常精炼的。