为什么init函数在jQuery.prototype中而不是在jQuery的闭包中?

为什么jQuery.prototype中的init函数? 我把它放在jQuery的闭包中,它工作正常。 我这样做了:

(function( window, undefined ) { var jQuery = function( selector, context ) { return new init( selector, context, rootjQuery ); } var init=function( selector, context, rootjQuery ) { ... } ... })(...) 

谢谢,

埃里克J.

我们不知道(向图书馆维护人员询问他们的设计理念)。

但是将它作为公共属性提供确实允许覆盖或修改构造函数而不会损害jQuery函数,并且它可以使原型inheritance成为可能需要在子实例上应用父构造函数的地方:

 function MyJQuery(selector, context) { this.init(selector, context, MyJQuery.root); // <== // or more explicit: // jQuery.fn.init.call(this, selector, …); … } MyJQuery.fn = MyJQuery.prototype = Object.create(jQuery.fn); MyJQuery.root = jQuery(document);