jQuery.extend 和jQuery.fn.extend的差别

来源:互联网 发布:php各类接口开发 编辑:程序博客网 时间:2024/04/25 13:43

我们可以把jQuery看成一个类,jQuery.extend就是扩张jQuery这个类。假设我们把jQuery这个类看成是人类,能吃饭喝水能跑步打球,现在我们用jQuery.extend这个方法给这个类扩展一个能唱歌的技能,这样的话不管是男人女人张三李四等都能继承这个技能,因为这个技能就相当于女娲给所有人类添加的。例如:

jQuery.extend({

sayHello:function(){
 console.log('say Hello');

}

});

调用时,$.sayHello();  这说明sayHello这个方法是类的,这是全人类都有的一个能力,这个扩展就是所谓的静态扩展,但是有些能力不是全人类都有的,比如生小孩就是女人特有

的一个能力,如果再把这个扩展到全人类里面就不可以了,需要扩展到类的某些对象中,不能给全人类共享。所以就有了下面这个扩展方法。

jQuery.fn.extend()这个方法,这个方法扩展的是jQuery.fn, 那jQuery到底是啥东西呢,源码如下,

jQuery.fn=jQuery.prototype={   //init:function(){ }      };

哦,原来jQuery.fn是jQuery.prototype,就是原型啊。那就是说jQuery.fn.extend是扩展类的原型,jQuery对象是jQuery类的实例,类是对象的构造函数,所以对象的原型就是构造函数的原型,就是说jQuery.fn.extend方法是在扩展具体某个对象的原型,扩展方法只是作用在对象上,不作用在整个类上,例如:

jQuery.fn.extend({

    pregnancy : function(){

       console.log('这是一个怀孕的功能‘);

     }

});


调用方法:

$('.girl').pregnancy();  //选择jQuery对象girl,然后赋予怀孕的能力,这样就不需要全人类都有这个功能了,但是有时候我们是需要用jQuery.extend的,当扩展一些全人类都需要的方法时,比如走路跑步这些能力,不需要逐一赋予能力会方便好多。


总结:差别在于扩展的对象不一样,一个是扩展类,一个是扩展类实例得到的对象

0 0