jQuery返回窗口对象

时间:2014-04-04 10:09:08

标签: javascript jquery

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

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

但是

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

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

2 个答案:

答案 0 :(得分:3)

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

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

任何链接此功能的尝试都会失败。

答案 1 :(得分:2)

你基本上做的是:

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

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