2013-05-15 75 views
3

在基於jQuery的代碼中,我有幾個地方直接訪問window對象。這是一種可接受的做法還是有這種方法的缺點?

我以爲$(window)是1:1替換爲window,但事實並非如此。例如"onhashchange" in window工程,但"onhashchange" in $(window)沒有。

其中我訪問window的其他構造如下:window.location,window.open,window.setTimeout。它會更好地發現和使用基於jQuery的替代所有這些?

+0

PS:http://benalman.com/projects/jquery-hashchange-plugin/ –

回答

1

直接訪問窗口對象沒有問題。 jQuery應該被用作幫助你進行客戶端開發的工具。如果正確的API在本地可用,那麼通過一切手段就可以使用它。在大多數情況下,本地API更快(儘管通常差異可以忽略不計)。

如果你真的想promoto一致性,你可以做到以下幾點來獲得訪問底層的窗口對象:

$(window)[0].onhashchange = ... 

但在我看來,它直接訪問窗口只是簡單。

+0

如果出現跨瀏覽器問題,它將出現在這兩種情況下 –

+0

那麼,對於跨瀏覽器問題,您會更好使用jQuery爲你抽象這些東西 – Kenneth

+0

這就是我的觀點。你的例子將遭受相同的跨瀏覽器問題(如果有),而不是使用jQuery。所以沒有包裝的收益,然後解開元素 –

1

在我看來,你不應該被你的圖書館強迫使用它的每一點。哪裏會「感覺不對」依靠jQuery是例如使用URL轉發(https://stackoverflow.com/a/1638449/623400):

$(location).attr("href", "http://www.google.de"); 

在那裏我會在jQuery的信任的地方僅是選擇API。我見過很多混合了幾種方法的代碼(querySelectorAll,getElementById ...)。在這裏,一致性是關鍵!

0

我沒有看到它的問題。從我的角度來看window是一個全局變量,應該像一個一樣使用。

圖書館是偉大的,直到你想換出一個。如果你試圖堅持核心,你的客戶端代碼將更容易遷移/重構到另一個庫。

我認爲jQuery是一個幫手,可以隱藏dom操作和http請求的複雜性 - 我相信這是最重要的。

相關問題