了解jQuery的实现-如何创建jQuery对象?

时间:2019-02-17 01:46:03

标签: javascript jquery

我正在学习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;

0 个答案:

没有答案