(This answer is written if you have some understanding of prototype inheritance. If you do not, you need to read an article about it to fully understand what is happening. Try a Google search for “prototype javascript inheritance”.)
When a new jQuery object is created internally, it is created using new jQuery.fn.init() . init is a constructor, so setting the prototype property in this constructor allows newly created jQuery objects to inherit all the properties of this prototype (all jQuery.fn methods).
If only new jQuery() was used, as you seem to assume that the object inherits from jQuery.prototype , but the jQuery function will be executed, which, as you know, is a lot. Instead, the init constructor is used because it does not come with the jQuery function baggage. Setting jQuery.prototype to the same as jQuery.fn.init.prototype allows you to make jqueryobject instanceof jQuery , which is nice, so the reason the jQuery object has a prototype.
source share