ng-book中关于缓存结果的函数,是不是有问题?

clipboard.png
其中,fn是要执行的函数,resolver是产生key,ng-book书上的截图,是不是这个函数有问题?

自己写了一个,并做了测试,是可以的,代码如下:

function memoize(fn,resolver){
    var cache = arguments.callee.cache = arguments.callee.cache || {};
    var key = resolver ?
        resolver() : new Date();
    return this.hasOwnProperty.call(cache,key)?
        cache[key]: (cache[key] = fn());
}
//test
var result01 = memoize(
    function () {
        return 'value0';
    },
    function(){
        return 'key0';
    }
);
var result02 = memoize(
    function () {
        return 'value1';
    },
    function(){
        return 'key0';
    }
);
console.log('result01 = ' + result01)
console.log('result02 = ' + result02)

那么现在的问题是:如果fn和resolver函数需要传入参数,那么如何是好?

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题