jq 的“类”的 静态方法 与 实例方法

来源:互联网 发布:做皮卡剧的软件 编辑:程序博客网 时间:2024/05/20 22:36

静态方法,属于类的方法,即类可以直接调用的方法。为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态成员只在内存中占一块区域;

实例方法,属于实例化类后对象的方法,即实例对象调用的方法。每创建一个类的实例,都会在内存中为非静态成员分配一块存储;


拿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原型上的方法和属性。