缓存jQuery引用

时间:2010-07-01 10:05:42

标签: jquery jquery-selectors

使用是否始终是最佳做法:

var $this = $(this);

或者是$(this)缓存,因此上面的行仅用于保存两个字符?

2 个答案:

答案 0 :(得分:3)

使用$(this)调用至少两个(可能超过两个)函数,并在每次使用时分配一个对象(消耗最终必须回收的内存)。如果您只是重复使用相同的东西,这就是额外的工作。我建议调用一次,然后缓存结果(例如,在函数内)而不是十几行$(this).foo(); $(this).bar();

$jQuery函数的别名,如下所示:

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
}

如您所见,它创建了一个对象,调用构造函数jQuery.fn.init。然后那个函数必须弄清楚它在做什么,因为,jQuery使用jQuery函数来处理18种不同的事情。我不是说它不会很快做到,而是为什么要做所有额外的工作。 : - )

编辑:如果您将DOM元素传递给它(通常是$(this)正在做的事情),jQuery.fn.init不再进一步函数调用。所以“只是”两个加上分配。

答案 1 :(得分:0)

$ function将创建jQuery对象的新实例(或检查所有现有的实例,我不确定唯一ID如何工作),但它可以是循环/每个函数的巨大开销

所以在这些情况下,答案是肯定的,在其他情况下,它可能是无关紧要的。

不,这绝对不仅仅是角色。