【发布时间】:2013-05-26 16:53:29
【问题描述】:
我正在尝试使用 memoization 来加速我的 Javascript,但我需要在 proto 方法上使用它,并且我需要所述方法来访问 this 对象,这让我很适应。这是我所拥有的:
MyObj.prototype.myMethod = function(){
var self = this
, doGetData = (function() {
var memo = []
, data = function(obj) {
var result = memo;
if (obj.isDirty) {
obj.isDirty = false;
result = $.map(obj.details, function(elem, i) {
return elem.export();
});
memo = result;
}
return result;
}
return data;
}())
;
return doGetData(self);
};
我可以让它运行,但我无法让它记忆。我知道出了点问题,但我不知道是什么。我知道有很多关于如何记忆的例子,但我遇到的没有一个像这样处理范围。
【问题讨论】:
-
你怎么知道它工作不正常?
-
我一直在做日志检查,当
isDirty为假时,result是一个空数组,[]。isDirty的初始状态是true以强制开始收集数据。