// 要实现这样,那么 jQuery 就要看成一个类,且返回一个正确的实例,且实例还要能正确访问 jQuery 类原型上的属性与方法
// jQuery 的方式是通过原型传递解决问题,把 jQuery 的原型传递给jQuery.prototype.init.prototype,所以通过这个方法生成的实例 this 所指向的仍然是 jQuery.fn,所以能正确访问 jQuery 类原型上的属性与方法
jQuery.fn.init.prototype = jQuery.fn;
})(window);
1) 使用
$('xxx')这种实例化方式,其内部调用的是
return new jQuery.fn.init(selector, context, rootjQuery) 这一句话,也就是构造实例是交给了
jQuery.fn.init() 方法去完成。2) 将
jQuery.fn.init 的 prototype 属性设置为
jQuery.fn,那么使用
new jQuery.fn.init() 生成的对象的原型对象就是
jQuery.fn ,所以挂载到
jQuery.fn 上面的函数就相当于挂载到
jQuery.fn.init() 生成的 jQuery 对象上,所有使用
new jQuery.fn.init() 生成的对象也能够访问到 jQuery.fn 上的所有原型方法。3) 实例化方法存在这么一个关系链 :
①
jQuery.fn.init.prototype = jQuery.fn = jQuery.prototype ;②
new jQuery.fn.init() 相当于
new jQuery() ;③ jQuery() 返回的是
new jQuery.fn.init(),而
var obj = new jQuery(),所以这 2 者是相当的,所以我们可以无 new 实例化 jQuery 对象。更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery表格(table)操作技巧汇总》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》
希望本文所述对大家jQuery程序设计有所帮助。










