代码改变世界

JavaScript Patterns 4.8 Function Properties - A Memoization Pattern

2014-06-16 23:17  小郝(Kaibo Hao)  阅读(339)  评论(2编辑  收藏  举报

Gets a length property containing the number of arguments the function expects:

function func(a, b, c) {}

console.log(func.length); // 3

var myFunc = function () {

    //  serialize the arguments object as a JSON string and use that string as a key in your cache object
    
    var cachekey = JSON.stringify(Array.prototype.slice.call(arguments)),
    
    if (!myFunc.cache[cachekey]) {
    
        var result = {};
        
        // ... expensive operation ...
        
        myFunc.cache[cachekey] = result;
    
    }

    return myFunc.cache[cachekey];

};

// cache storage

myFunc.cache = {};

 

References: 

JavaScript Patterns - by Stoyan Stefanov (O`Reilly)