A different technique for building a memoized function (using the code from

from jquery ninja book

HTML

<ul id="results"></ul>

CSS

#results li.pass { color: green; }
#results li.fail { color: red; }

JavaScript

function assert(value, desc) {
    var li = document.createElement("li");
    li.className = value ? "pass" : "fail";
    li.appendChild(document.createTextNode(desc));
    document.getElementById("results").appendChild(li);
}

Function.prototype.memoized = function(key) {
    this._values = this._values || {};
    return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
};

Function.prototype.memoize = function() {
    var fn = this;
    return function() {
    		console.log(arguments)
        return fn.memoized.apply(fn, arguments);
    };
};

var isPrime = (function(num) {
    var prime = num != 1;
    for (var i = 2; i < num; i++) {
        if (num % i == 0) {
            prime = false;
            break;
        }
    }
    return prime;
}).memoize();

assert(isPrime(7), "Make sure the function works, 5 is prime.");