1.
jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); }
jQuery.fn.init.prototype = jQuery.fn;
代码为什么这么写?
首先, jQuery.fn=jQuery.prototype.
调用$("#domId") 时, 其实是调用了new jQuery.prototype.init("#domId"), 而这里有一个new.
javascript里面的new用来构造对象, $("#domId") 返回的就是一个对象.
而如果没有函数里面的这个new, 就需要在函数外面有个new(如 new jQuery("#domId"), 而这种写法略显冗余, 这正是jQuery函数内部增加init的初衷), 或者换用其他更复杂的写法.
所以就出现了这个很绕的写法.
而jQuery.fn.init.prototype = jQuery.fn; 这行代码也保证了$("#domId") 利用init函数构造的对象和 new jQuery("#domId")是等价的.