jQuery对象和window对象

我正在玩jQuery的内容,只是为了了解它是如何工作的.我在很大程度上理解它,但我对某些事情感到好奇.

在jQuery中,我们实际上创建了jQuery对象(在第60行):

jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
},

init方法很长,所以我会省去你的复制和粘贴(如果你想看到它,请查看源代码,它在第123行).这个方法可以通过jQuery.prototype获得.从本质上讲,它会查看参数并对元素选择做出一些决定.

在脚本的下方(第19174行),我们有:

// Expose jQuery to the global object
window.jQuery = window.$= jQuery;

这很有趣,因为注释掉这一行仍然可以在全局对象中使用$.

为什么需要这个?似乎调用init方法的jQuery函数创建了$way的全局方式.我在Chrome,Firefox和Safari上进行了测试,他们都可以在没有Expose jQuery的情况下使用全局对象线.

这适用于旧版浏览器和向后兼容性?

最佳答案 jQuery库在闭包中定义,该行真正将库公开到全局范围.

alert($)

我尝试在小提琴http://jsfiddle.net/RBG7P/1/中评论该行,它引发了我一个例外.当没有评论时,它起作用了.

你确定你做得对吗?

点赞