webui-aria2/js/libs/dojox/lang/aspect/memoizer.js
2012-05-01 19:52:07 +08:00

41 lines
950 B
JavaScript

//>>built
define(["dijit","dojo","dojox"],function(_1,_2,_3){
_2.provide("dojox.lang.aspect.memoizer");
(function(){
var _4=_3.lang.aspect;
var _5={around:function(_6){
var _7=_4.getContext(),_8=_7.joinPoint,_9=_7.instance,t,u,_a;
if((t=_9.__memoizerCache)&&(t=t[_8.targetName])&&(_6 in t)){
return t[_6];
}
var _a=_4.proceed.apply(null,arguments);
if(!(t=_9.__memoizerCache)){
t=_9.__memoizerCache={};
}
if(!(u=t[_8.targetName])){
u=t[_8.targetName]={};
}
return u[_6]=_a;
}};
var _b=function(_c){
return {around:function(){
var _d=_4.getContext(),_e=_d.joinPoint,_f=_d.instance,t,u,ret,key=_c.apply(_f,arguments);
if((t=_f.__memoizerCache)&&(t=t[_e.targetName])&&(key in t)){
return t[key];
}
var ret=_4.proceed.apply(null,arguments);
if(!(t=_f.__memoizerCache)){
t=_f.__memoizerCache={};
}
if(!(u=t[_e.targetName])){
u=t[_e.targetName]={};
}
return u[key]=ret;
}};
};
_4.memoizer=function(_10){
return arguments.length==0?_5:_b(_10);
};
})();
});