JavaScript缓存返回值的函数有多个参数
JavaScript cache return value of a function with more than one parameter
我正在浏览John Resig关于高级JavaScript的代码片段。在#19中,他提到了一个缓存函数返回值的方法。缓存具有多个参数的函数的返回值的最佳方法是什么?
必须有比将接收到的参数字符串化并将其用作缓存对象的键更好的方法:
function $$(selector, el) {
var cacheKey = JSON.stringify(arguments);
if ($$.cache[cacheKey]) return $$.cache[cacheKey];
return ($$.cache[cacheKey] = NodeListToArray( (el || document).querySelectorAll(s) ));
}
$$.cache = {};
您可以使用可以对对象进行操作的自定义散列函数。但是哈希函数会导致冲突,并且比您的简单示例需要更多的代码。
或者您可以将缓存设置为n维,其中n是参数的数量。也就是:
function $$(selector, el) {
if ($$.cache[selector] && $$.cache[selector][el])
return $$.cache[cacheKey][el];
// etc.
假设选择器和el都可以用作对象键。您可能需要以另一种方式将它们字符串化。
考虑一个数组元素,
JSON (JavaScript对象表示法)在通用平台上工作,所以为了方便使用,你必须创建一个函数,
这里,$$.cache[0]
是你阅读cachekey
后的简单方法,
如果我们让事情变得更简单,我们以后可能会有安全问题。
我希望这能满足你的要求。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆