$(window)和window在jquery/javascript中有什么区别?

13
JavaScript中的window对象和jQuery $(window)有什么区别?
我在Chrome控制台尝试了一下,发现它们实际上很相似:$(window)只是将window对象用jQuery对象包装起来,这样就可以使用jQuery的函数,如height()、width()等。
我已经尝试通过搜索和查看Stack Overflow来获取更多信息,但没有找到更多有用的内容。

10
你的结论基本上是正确的。在我看来,不需要进一步解释。 - nnnnnn
事实上,你是正确的。 - Igarioshka
1
类似于jQuery $(this) vs this的东西! - palaѕн
6
$(window)[0] === window - eric_zyh
window.$(window) === $(window) - Néstor Waldyd
4个回答

14
当你写 $(window) 时,你应该知道这段代码会在JS引擎上运行。你是否曾经想过为什么jQuery对象都有括号?这是因为$是一个函数对象。基本上你在调用$函数,并将原生的全局对象或window对象作为参数传递给它。
如果你浏览jQuery源代码,你会看到它会将那个对象传递给许多内部函数,在最后,它会返回一个jQuery包装器对象。所以,是的,你的假设基本上是正确的。

0

window是一个全局对象,与任何第三方库都没有关系。 然而$(window)返回一个jQuery对象。 你说得对,它只是一个包装器,但它带有所有可能的jQuery好处。我们可以像普通的jQuery对象一样使用它,可以访问它的子元素,可以将数据与它关联等等。


1
window 不是一个 DOM 对象,它是一个指向匿名全局对象的循环引用。只需编写一个脚本,执行以下代码:console.log(this === window);,它将输出 true。在简单的 <html><head></head><body></body></html> dom 中,以下代码也会输出 true:console.log(this.window === window === this) - Elias Van Ootegem
@EliasVanOotegem - 你的第二个例子 console.log(this.window === window === this) 输出 false - nnnnnn
@nnnnnn:没错,在控制台中试过了,window === thisthis.window===this 都会输出 true。那么问题来了:JS 是否支持 operand === operand === operand?可能不支持。 - Elias Van Ootegem
1
@EliasVanOotegem - 这是一个合法的语句,但它所做的是对第一个 === 进行评估,并将其两个操作数返回为布尔值,然后继续执行其他针对该布尔值的 === 测试。也就是说,(this.window === window) === this(true) === this - nnnnnn
@nnnnnn:Nips,真没想到我会忽略那个:) - Elias Van Ootegem

0

你是正确的

window是一个jQuery包装器,它包含全局window对象。这里的意图是创建一个本地作用域的window变量,使我能够立即访问jQuery方法,如width()、height()、scrollLeft()和scrollTop()。


1
我认为你错了:如何在本地作用域中创建全局对象的变量? - Elias Van Ootegem
@EliasVanOotegem - var localVariable = window; 这样做可以吗?但是这个答案并没有什么意义,因为变量的作用域与其可用的方法无关。 - nnnnnn

0

window 对象代表窗口本身。您可以在这里找到更多的解释。从您上面描述的内容来看,似乎您想要访问 document 属性而不是 window 属性。您可以按以下方式访问属性长度、高度等:

  • document.height(纯 JavaScript)或 $(document).height()(jQuery)
  • document.width(纯 JavaScript)或 $(document).width()(jQuery)

有关更多document属性,请参见这里


为什么不使用 $(window).height()?它返回浏览器视口的高度,通常与文档的高度不同。 - nnnnnn
你也可以这样做,只是结果会有所不同,因为window.height获取的是窗口的高度,而不是浏览器的高度。因此,使用window.innerHeight得到的数字会比document.height小。使用方法基本上取决于你想要实现什么效果。 - user2424941

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接