2017-08-31 171 views
0

當使用jQuery,我知道你要存儲一個對象,而不是反覆橫跨所述DOM:

// This is good 
var something = $(".some-class") 

我的問題是不jQuery的$(this)有類似的性能問題?我應該這樣做:

// should I do this? 
var current_object = $(this) 

$(this)

(這是我的義務this是混淆笑話)

回答

1

$(this)不是免費的。它實例化一個新的jQuery對象。但是與遍歷DOM相比,它幾乎是免費的。

優化這個級別通常是不必要的。編寫可讀的代碼,並且只有在遇到性能瓶頸時才優化這類事情。

我的規則,對於像var foo = $(this)這樣的東西是:使用任何更容易閱讀的情況。

$(this)有一個非常明確的含義,當它是有道理的,所以用它。但是,如果您正在做一些有意義的事情,請撥打$(this)作爲其他名稱,請執行此操作。

優化爲你和你的同胞編碼的時間。這是等式中最有價值的資源。

+0

如果'$(本)'啓動一個新的jQuery對象,那麼就不會'無功富= $(本)'只是做一個副本?這聽起來像它會傷害*性能而不是幫助,因爲現在你有兩個相同的對象 – Scribblemacher

+0

如果你只使用它一次,它會損害性能。如果您多次使用它,這將有助於提高性能。您的'$(「selector」)'例子也是如此 - 只有當您多次使用它時,該變量纔有用。 – Flimzy

+0

即使在多次使用它的情況下,它會如何幫助?不像'$([selector])',我假設'$(this)'不必橫切DOM。 「foo」和「$(this)」在低水平上基本不會相同嗎?也許我不瞭解jQuery對象的本質。 (我知道我們在這裏談論微不足道的性能差異,我只是好奇) – Scribblemacher