为什么jQuery.prototype中的init函数?我把它放在jQuery的闭包中,它工作正常。我这样做了:
(function( window, undefined ) {
var jQuery = function( selector, context ) {
return new init( selector, context, rootjQuery );
}
var init=function( selector, context, rootjQuery ) {
...
}
...
})(...)
谢谢,
Eric J.
答案 0 :(得分:3)
我们不知道(向图书馆维护人员询问他们的设计理念)。
但是将它作为公共属性提供确实允许overwriting or amending the constructor而不会损害jQuery
函数,并使prototypical 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);