3

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

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

我访问的其他构造window是:window.location, window.open, window.setTimeout. 为所有这些都找到并使用基于 jQuery 的替换会更好吗?

4

3 回答 3

1

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

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

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

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

于 2013-05-15T07:53:58.120 回答
1

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

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

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

于 2013-05-15T07:58:30.607 回答
0

我看不出有什么问题。从我的角度来看,window它是一个全局变量,应该像一个一样使用。

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

我认为 jQuery 可以帮助隐藏 dom 操作和 http 请求的复杂性——我相信,这是一流的。

于 2013-05-15T09:12:32.060 回答