当使用jQuery时,是否适合访问窗口而不是$(window)?

时间:2013-05-15 07:19:25

标签: jquery

在基于jQuery的代码中,我有几个地方直接访问window对象。这是一种可以接受的做法,还是这种做法有任何缺点?

我认为$(window)window的1:1替代品,但事实并非如此。例如,"onhashchange" in window有效,但"onhashchange" in $(window)没有。

我访问window的其他构造包括:window.locationwindow.openwindow.setTimeout。是否更好地为所有这些替换找到并使用基于jQuery的替换?

3 个答案:

答案 0 :(得分:1)

直接访问window-object没有问题。 jQuery应该被用作帮助您进行客户端开发的工具。如果本地可以使用正确的API,那么请务必使用它。在大多数情况下,本机API更快(尽管通常差异可以忽略不计)。

如果你真的想要促进一致性,你可以执行以下操作来访问底层窗口对象:

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

但在我看来,直接访问窗口会更容易。

答案 1 :(得分:1)

在我看来,你不应该被你的图书馆强迫使用它的每一点。依赖于jQuery“感觉不对”的地方就是URL转发(https://stackoverflow.com/a/1638449/623400):

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

我只信赖jQuery的地方是选择器API。我已经看到很多代码混合了几种方法(querySelectorAll,getElementById ......)。在这里,一致性是关键!

答案 2 :(得分:0)

我没有看到它的问题。从我的观点来看,window是一个全局变量,应该像一个一样使用。

图书馆很棒,直到你想换掉一个。如果您尝试坚持使用核心,那么您的客户端代码将更容易迁移/重构到另一个库。

我认为jQuery可以帮助隐藏dom操作和http请求的复杂性 - 我相信,这是它的最佳选择。