缓存this
多次访问时总是一个好主意。关于性能需要注意的一点是,this
是一个JavaScript对象 - 我见过很多代码,它们几乎没有任何理由围绕this
包装jQuery对象。
考虑以下代码片段:
... (function()
{
alert($(this).attr("class"));
});
对战更清洁和更快一点:
... (function()
{
alert(this.className);
});
更新
在回答您的更新..做:
... (function()
{
var that = $(this);
that.functionCall();
});
不会提高性能。它实际上慢了一点,因为你在一个jQuery对象中包装this
之前创建了一个变量。
... (function() // calling a function 1000 times on a cached jQuery object
{
var that = $(this);
for (var i = 0; i <= 1000; i++)
{
/* using a cache will greatly increase performance when
doing 1000 operations. */
that.functionCall();
}
});
在一个侧面说明:
如果你对that
操作 - - 缓存$(this)
jQuery对象多次,你会..根据操作的次数看到一个提高性能:如果您对jQuery性能优化感兴趣,则在jQuery Tips and Tricks问题中有许多重要提示。给它一个去:)
我想OP是真正想知道的是,如果有多次使用'$(this)'性能损失,因为jQuery不必搜索DOM的对象在那个代码中,因为目标对象是作为参数传递的。事实上,它只被使用*一次可能是附带的示例代码,而不是与实际问题 – 2009-12-08 10:09:30
相关。但是,他不应该这样问这个问题。无论如何,你会发现Stack Overflow和其他地方的其他地方,你将会得到* *问题的答案,而不是那些*应该被问到的问题*。 – 2009-12-08 10:16:02