jQuery 返回窗口对象

jQuery returns window object

本文关键字:对象 窗口 返回 jQuery      更新时间:2023-09-26

这是一个非常愚蠢的问题,但对于我的生活,我无法理解:

为什么$(button).addClass('focus')返回 DOMNodes

(button.addClass || $(button).addClass)('focus')返回Window对象?

编辑:这是否与JavaScript间接调用有关,例如:(1, alert)('test')

jQuery函数可以链接。这是通过将return this;置于其功能的末尾来完成的。

但是,当您执行(button.addClass || $(button).addClass)('focus') 时,您将取消引用该函数,并且其上下文将丢失。 window是默认上下文(除非您处于严格模式,在这种情况下,我认为它是null(但作为非严格模式用户,我不确定)),这就是您取回Window的原因。

此外,任何链接此函数的尝试都将失败。

你本质上在做的是这样的:

var fn;
if (button.addClass)
    fn = button.addClass;
else
    fn = $(button).addClass;
fn('focus');

因此,您将丢失对按钮或 $(按钮) 的引用。