通常我们这么使用jQuery:
$('#test').text('Test');
在这个过程中,jQuery对象是如何创建的呢,难道不需要new操作符么?
看下面:
(function(window, undefined) { var // ... jQuery = function(selector, context) { // The jQuery object is actually just the init constructor 'enhanced' // 实例化方法 jQuery() 实际上是调用了其拓展的原型方法 jQuery.fn.init return new jQuery.fn.init(selector, context, rootjQuery); }, jQuery.fn = jQuery.prototype = { // 实例化化方法,这个方法可以称作 jQuery 对象构造器 init: function(selector, context, rootjQuery) { // ... } } // 这一句很关键 jQuery.fn.init.prototype = jQuery.fn; // 把jQuery、$暴露给外界 window.jQuery = window.$ = jQuery; })(window);
那么,
1. $('#test')就等价于jQuery('#test')
2. jQuery('#test')实际上是个函数调用,相当于jQuery('#test', undefined),返回的是【new jQuery.fn.init('#test', undefined, rootjQuery);】,
因为【jQuery.fn.init.prototype = jQuery.fn = jQuery.prototype】,所以相当于new了jQuery,完成了实例化。
所以我们可以不必显式地调用new jQuery,大大方便了使用。