4

我正在玩弄 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线路的情况下使用。

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

4

1 回答 1

2

jQuery 库是在闭包中定义的,那一行是真正将库暴露给全局范围的地方。

alert($)

我尝试在小提琴http://jsfiddle.net/RBG7P/1/中评论该行,它抛出了一个异常。未注释时,它起作用了。

你确定你做对了吗?

于 2013-03-25T17:11:32.537 回答