【发布时间】:2011-08-30 17:30:02
【问题描述】:
读了几遍后,我仍然不明白Stoyan Stefanov's "JavaScript Patterns" 第76 页的这个示例代码是如何工作的。我还不是忍者。但对我来说,它读起来就像只存储一个空对象:
var myFunc = function (param) {
if (!myFunc.cache[param]) {
var result = {};
// ... expensive operation ...
myFunc.cache[param] = result;
}
return myFunc.cache[param];
};
// cache storage
myFunc.cache = {};
除非看不见的“昂贵操作”将存储回result,否则我看不到任何保留。
结果存储在哪里?
P.S.:我读过Caching the return results of a function from John Resig's Learning Advanced JavaScript,这是一个类似的练习,我明白了。但是这里的代码不同。
【问题讨论】:
-
“昂贵的操作”是填充
result对象,然后将其存储在myFunc函数的cache属性内的param名称下。
标签: javascript caching hash memoization