Function properties
Tuesday, September 15th, 2009Since functions are objects, and objects are mutable in JavaScript, you can add properties to your functions.
Why? For caching results of computations for example. Here's a memoization done this way.
function myFunc(param){ if (!myFunc.cache) { myFunc.cache = {}; } if (!myFunc.cache[param]) { var result = {}; // ... myFunc.cache[param] = result; } return myFunc.cache[param]; }
Here myFunc()
gets a cache
property which is an object. The function does the complicated computations based on a parameter and ends up with a result
object. Using the parameter as a key in the cache
object, it stores the result.
Consecutive calls with the same parameter will get the result from the cache, no need to compute the same result again.