gpt4 book ai didi

javascript - 缓存函数的返回结果,来自 John Resig 的 Learning Advanced JavaScript

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:28:09 30 4
gpt4 key购买 nike

我对约翰·雷西格 (John Resig) 在 http://ejohn.org/apps/learn/#19 中的练习 #19 中的这个函数有一些疑问。

  1. 倒数第二行 getElements.cache = {}; 的目的是什么?是不是将返回结果存储在一个数组中?

  2. 如果我在 (1) 中的猜测是正确的,它是否只捕获返回结果,因为在函数的“else”部分,getElements.cache[name] = 结果;?

  3. 当我在教程中使用控制台中的代码时,我从“else”部分删除了 getElements.cache[name] = results 行,但仍然得到相同的结果结果,就像它在那里时一样——也就是说,它告诉我有 76 个元素。因此,如果不需要获取结果,这行 getElements.cache[name] = results 的目的是什么?

  4. 在函数的“else”部分中,getElements.cache[name] = results; 行的顺序与代码的 if 部分,其中显示 results = getElements.cache[name]

  5. 最后,cache 是 JavaScript 中的预定义函数吗?我在文档中找不到它。

function getElements( name ) { 
var results;

if ( getElements.cache[name] ) {
results = getElements.cache[name];
} else {
results = document.getElementsByTagName(name);
getElements.cache[name] = results;
}

return results;
}
getElements.cache = {};

log( "Elements found: ", getElements("pre").length );

最佳答案

a) 倒数第二行确定对象 getElements 上的属性“缓存”是一个对象。本质上是初始化该属性。

b) 那就是缓存,将 getElements 视为一个对象,而缓存是保存结果的散列。

c) 是的,你仍然会得到相同的结果,因为缓存只是缓存,它并没有改变答案,它只是有可能加快速度。

d) 是的,一个是将结果存储到缓存中,另一个是从缓存中取出一个结果。

e) 不,这是为“getElements”定义的自定义属性,可以定义任意数量的具有不同名称的属性。

关于javascript - 缓存函数的返回结果,来自 John Resig 的 Learning Advanced JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333914/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com