解释:jQuery缓存代码

Jos*_*son 4 javascript jquery caching

如果先前已选择了元素,则此代码片段将从缓存中返回元素,或者选择,缓存并返回元素.它对于更新从未显着改变的元素的内容(即,用户看到的计数器的父级,其中数字改变但父级不改变)是有用的.代码如下:

var $$ = (function() {
    var cache = {};
    return (function (selector) {
        return cache[selector] || ( cache[selector] = jQuery (selector) );
    });
})();
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用它:

$$('#id')


现在......这是怎么回事?如何$$访问jQuery选择器?它与$$开始无关$,你也可以这么做var foo.如何$$映射传递给它的内容selector.我希望看到var selector = argumentName里面$$.另外,对我来说似乎没有$$设置接收参数(例如,函数(输入){}),但它很容易吗?

这段小代码让我感到非常困惑,一些清晰度将会非常受欢迎.谢谢!

Cla*_*diu 5

这很简单.这是等效的代码,但在解压缩版本中使其更明确:

function generateCachingJQuery() {
    var cache = {};
    function queryFunc(selector) {
        if (cache[selector]) {
            return cache[selector];
        } 
        else {
            cache[selector] = jQuery(selector); //same as $(selector)
            return cache[selector];
        }
    }
    return queryFunc;
}
var $$ = generateCachingJQuery();
Run Code Online (Sandbox Code Playgroud)

如果你注意到,首先你有一个匿名函数 - 我generateCachingJQuery在这里命名- 它返回最终的函数$$.这样做只有内部函数(queryFunc此处命名)才能访问cache变量.剩下的只是一个单行程,我在这里解压缩,以便更清楚它正在做什么.

编辑:要清楚,$$最终是queryFunc在上面的代码,而不是generateCachingJQuery.请注意,queryFuncselector作为变量.