这是一个非常愚蠢的问题,但对于我的生活,我无法理解:
为什么$(button).addClass('focus')
会返回DOMNodes
但是
(button.addClass || $(button).addClass)('focus')
会返回Window
个对象吗?
编辑:这是否与JavaScript间接调用相关联,例如:(1, alert)('test')
?
答案 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');
因此,您将失去对按钮或$(按钮)的引用。