jQuery对象和window对象

时间:2013-03-25 17:01:47

标签: jquery

我正在玩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行的情况下进行测试。

这适用于较旧的浏览器以及向后兼容性吗?

1 个答案:

答案 0 :(得分:2)

jQuery库在闭包中定义,该行真正将库公开到全局范围。

alert($)

我尝试在小提琴http://jsfiddle.net/RBG7P/1/中评论该行,它引发了一个异常。如果没有评论,它就可以了。

你确定你的做法是正确的吗?