Javascript Memoization 캐 시 함수 사용 설명

1423 단어
예 를 들다
 
  
var flower= function(){
var t=0,i=0;
for(;i<5000000;i++){
t++;
}
return t;
}

flower 반환 t 의 값
이 함수 가 2 - 3 초 걸린다 고 가정 하 세 요.
Memoization 함 수 를 통 해 같은 값 을 다시 찾 을 때 미리 캐 시 된 value 를 직접 가 져 와 즉시 되 돌려 줍 니 다.
Memoization 함수
 
  
var Memoize = function(fn, cache, refetch, obj){
cache = cache || {};//
return function(){
var k = arguments[1] ? Array.prototype.join.call(arguments, '__') : arguments[0];// '__'
if (!(k in cache) || (refetch && cache[k] == refetch)) { // , refetch ,
cache[k] = fn.apply(obj || fn, arguments); //obj this
}
return cache[k];//
}
}

Demo:
New Document (function(){ var Memoize = function(fn, cache, refetch, obj){ cache = cache || {}; return function(){ var k = arguments[1] ? Array.prototype.join.call(arguments, '__') : arguments[0]; if( !(k in cache) && !(refetch && cache[k] == refetch)){ cache[k] = fn.apply(obj || fn, arguments); } return cache[k]; } } var test = function(){ var t=0,i=0; for(;i<12110000;i++){ t++; } return t; } var test2 = Memoize(test) alert(test2()); alert(test2()); })();
[Ctrl + A 전체 주석: 외부 Js 를 도입 하려 면 새로 고침 이 필요 합 니 다.]

좋은 웹페이지 즐겨찾기