jq 的“类”的 静态方法 与 实例方法
静态方法,属于类的方法,即类可以直接调用的方法。为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态成员只在内存中占一块区域;
实例方法,属于实例化类后对象的方法,即实例对象调用的方法。每创建一个类的实例,都会在内存中为非静态成员分配一块存储;
拿jQuery框架来看,它的方法都是实例方法,它的工具函数都是静态方法。静态方法$.each(); 实例方法$('body').each();
$.extend是拓展静态方法,而$.fn.extend是拓展实例方法
静态方法 是 $ 对象用的方法;
实例方法 是$() 实例化出来的 jq对象 的方法;
问题:$ 是什么
答案:window.jQuery = window.$ = jQuery;
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
},
jQuery和$是两个等价的全局变量
$ 就是一个函数,它通过init 函数构造 并返回一个 jq 对象;
咱们再细看一下jQuery.fn.init();这个jquery.fn是个什么东东,已及init构造器到底有什么特殊的地方?来咱再上代码来看看
jQuery.fn = jQuery.prototype = {
init: function( selector, context, rootjQuery ) {
......
},
....
};
jQuery.fn.init.prototype = jQuery.fn;jQuery中把init的原型指向了jQuery.fn即指向了jQuery的原型,jQuery.prototype。这样做的好处在于,由init()构造器构造的对象就能够通过原型链访问到jQuery原型上的方法和属性。