JavaScript内存化只能用于缓存返回的结果吗
Can JavaScript memoization only be used to cache returned results?
我已经创建了下面的函数,它将在我的网站的每个页面上运行。它运行得足够快,但由于它在每一页上都运行,它似乎是缓存的好候选者,也许可以使用内存化。在我对这个主题的研究中,记忆总是缓存与return
语句一起发送的结果。这很有道理,但由于我的函数没有返回任何内容,我想知道它是否仍然可以缓存?也许是用记忆以外的东西?
这是我的功能:
// A requirejs module
define(function() {
var loadMenu,
cssdisabled,
testcss,
currstyle;
/*
* Dynamically create a form that looks like this:
*
* <form action="/search.html" id="js-searchbox" class="form">
* <input type="text" name="q" id="tipue_search_input"
* placeholder="Search...">
* <input type="submit" id="tipue_search_button" value="Search">
* </form>
*/
loadMenu = function() {
var loadBox = document.getElementById("searchbox"),
footerBox = document.getElementById("search-about-column"),
frag = document.createDocumentFragment(),
form = document.createElement("form"),
searchTextBox = document.createElement("input"),
searchButton = document.createElement("input");
// set attributes for form
form.action = "/search.html";
form.setAttribute("role", "search");
form.id = "js-searchbox";
form.setAttribute("class", "form");
// set attributes for Search text box
searchTextBox.type = "text";
searchTextBox.name = "q";
searchTextBox.id = "tipue_search_input";
searchTextBox.placeholder = "Search...";
// set attributes for Submit button
searchButton.type = "submit";
searchButton.setAttribute("class", "btnSearch");
searchButton.value = "Search";
// Arrange elements
form.appendChild(searchTextBox);
form.appendChild(searchButton);
// Load arranged elements into document fragment
frag.appendChild(form);
// Load document fragment into #searchbox, which is already on the page
loadBox.appendChild(frag);
}
cssdisabled = false;
testcss = document.createElement('div');
testcss.style.position = 'absolute';
document.getElementsByTagName('body')[0].appendChild(testcss);
if (testcss.currentStyle) {
currstyle = testcss.currentStyle['position'];
}
else if (window.getComputedStyle) {
currstyle = document.defaultView.getComputedStyle(testcss, null).getPropertyValue('position');
}
cssdisabled = (currstyle === 'static') ? true : false;
document.getElementsByTagName('body')[0].removeChild(testcss);
if (cssdisabled === false) {
loadMenu();
} else {
return false;
}
});
使用frag
作为备忘录:
frag.appendChild(form);
loadMenu.frag = frag;
然后更新分配:
loadMenu = loadMenu.frag || function() {...}
参考
- 从DOM创建可重复使用的文档片段
- 加速您的JavaScript,第4部分
- DOM文档片段
相关文章:
- JSONP请求返回结果,但也触发error_callback
- async问题,JS Promise无法返回结果,但可以使用console.log
- Meteor js-控制台显示'未定义'即使返回结果
- 正在等待HTTP调用从函数返回结果
- 使用函数for循环遍历对象以更改值,然后返回结果
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- Javascript 函数不返回结果
- 用逗号分隔返回结果中的对象
- 需要呈现MongoDB查询返回结果的特定索引/位置
- HTML5 文件阅读器如何返回结果
- javascript循环遍历列表项,并在数组中返回结果
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- 在angularjs工厂中,如何在函数解析后返回结果
- 我在jQuery中的Rock Paper Scissors程序只在平局时返回结果
- 如何使用ajax调用php并返回结果
- 添加第二维度的Javascript未返回结果
- Node.js没有返回结果
- jquery裁剪图像selction未返回结果
- 如何在phonegap javascript函数中返回结果
- 如果文本筛选器在ng重复中未返回结果,则显示消息