An example of function value memoization.
from jquery ninja book
by dandoyon
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 isPrime(num) {
var prime = num != 1;
for (var i = 2; i < num; i++) {
if (num % i == 0) {
prime = false;
break;
}
}
return prime;
}
assert(isPrime.memoized(5), "Make sure the function works, 5 is prime.");
assert(isPrime._values[5], "Make sure the answer is cached.");