緩存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