Шаблон мемоизации

// предполагается, что функция принимает // единственный аргумент param элементарного типа (например, строка). var myFunc = function (param) { if (!myFunc.cache[param]) { var result = {}; // ... продолжительные операции ... myFunc.cache[param] = result; } return myFunc.cache[param]; }; // создание хранилища результатов myFunc.cache = {} // функция принимает большее число параметров, имеющих // более сложные типы (сериализация в JSON) var myFunc = function () { var cachekey = JSON.stringify(Array.prototype.slice.call(arguments)), result; if (!myFunc.cache[cachekey]) { result = {}; // ... продолжительные операции ... myFunc.cache[cachekey] = result; } return myFunc.cache[cachekey]; }; // создание хранилища результатов myFunc.cache = {};

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.