我正在学习Javascript,并试图通过练习来理解jQuery代码。我正在查看jQuery.js的最小化开发版本(最新版本)。它大约有10,000行,我只是想了解基本结构以及在每次调用$(...)
时创建jQuery对象时要做什么。
有一个答案here,其中提供了“类似于jQuery体系结构的简单结构”。这太棒了,对我有很大帮助。但是,它与实际代码之间似乎存在关键的区别,并且这种区别与我不了解的部分有关。在简单的示例中,我们有:
var foo = function ...
return new foo ...
这并不奇怪。但是,在实际的jQuery中,我们有:
var jQuery = function ...
return new jQuery.fn.init ....
在jQuery的定义中,我们需要一个原型,但是(我认为)该原型仅在new jQuery
完成执行后才创建。我们还需要向该原型添加init方法。但是所有这些似乎在上面的陈述中都是乱七八糟的。
我在此主题上发现的其他问题未回答我的特定问题。例如,this one可能看起来很相似,但没有解决我的问题。
那么这如何工作?
以下是我正在查看的一些代码片段:
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
和
jQuery.fn = jQuery.prototype ...
和
init = jQuery.fn.init = function( selector, context ) { ...
和
window.jQuery = window.$ = jQuery;
return jQuery;