在基于jQuery的代码中,我有几个地方直接访问window
对象。这是一种可以接受的做法,还是这种做法有任何缺点?
我认为$(window)
是window
的1:1替代品,但事实并非如此。例如,"onhashchange" in window
有效,但"onhashchange" in $(window)
没有。
我访问window
的其他构造包括:window.location
,window.open
,window.setTimeout
。是否更好地为所有这些替换找到并使用基于jQuery的替换?
答案 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请求的复杂性 - 我相信,这是它的最佳选择。