2

为什么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。

4

1 回答 1

3

我们不知道(请向库维护者询问他们的设计方案)。

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

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);
于 2013-11-03T22:43:29.950 回答