我正在玩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;
这很有意思,因为注释掉这一行仍然会使$
在全局对象中可用。
为什么需要这个?好像调用jQuery
方法的init
函数无论如何都会创建$
的全局。我在Chrome,Firefox和Safari上对此进行了测试,他们都可以在没有Expose jQuery to the global object
行的情况下进行测试。
这适用于较旧的浏览器以及向后兼容性吗?
答案 0 :(得分:2)
jQuery库在闭包中定义,该行真正将库公开到全局范围。
alert($)
我尝试在小提琴http://jsfiddle.net/RBG7P/1/中评论该行,它引发了一个异常。如果没有评论,它就可以了。
你确定你的做法是正确的吗?