我在http://ejohn.org/apps/learn/#19中约翰·雷西格(John Resig)的练习#19中对此功能有一些疑问
getElements.cache = {};
是否将return results
存储在数组中? return results
,因为在该函数的“else”部分中,getElements.cache[name] = results;
是? getElements.cache[name] = results
行,但仍然得到了与那里相同的结果,即它告诉我有76个元素。因此,如果不需要获取结果,此行getElements.cache[name] = results
的目的是什么? getElements.cache[name] = results;
的顺序与该代码的if
部分相反,该行表示results = getElements.cache[name]
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上的属性“cache”是一个对象。本质上是初始化该属性。
b)那将是缓存,将getElements视为对象,并且缓存是保留结果的哈希。
c)是的,您仍然会得到相同的结果,因为缓存只是缓存,它无论如何都不会改变答案,只会加快处理速度。
d)是,一个正在将结果存储到缓存中,另一个正在将结果从缓存中拉出。
e)否,这是为“getElements”定义的自定义属性,可以定义多个具有不同名称的属性。