jQuery.extend函数与jQuery.fn.extend函数

首先,这两个函数都是用来开发插件的。jQuery插件开发分为两种:1 .类级别,2 .对象级别,其中,jQuery.extend()属于类级别,jQuery.fn.extend()属于对象级别。这两种方法都可以扩展一个或多个方法和属性(主要用于扩展方法),下面分别来介绍下:

1.jQuery.extend()

虽然JS没有明确的类的概念,但是先把它看成一个类,这样更好理解一些。

jQuery可以看成是一个封装的很好的类。而jQuery.extend(object),就是扩展jQuery这个类,相当于向jQuery类添加静态方法

jQuery.extend({
num:12,
add: function(a, b) { return a + b; },
sub: function(a, b) { return a - b; }
});
jQuery.num;
jQuery.add(2,3); //  添加后,可直接调用
jQuery.sub(4,3);

还有一种情况,就是用一个或多个其他对象来扩展一个对象,返回被扩展的对象:

jQuery.extend(target, object1,...[objectN])

var settings = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
jQuery.extend(settings, options); 
结果:settings == { validate: true, limit: 5, name: "bar" }


2.jQuery.fn.extend()

从名字上来看,这个扩展的是jQuery.fn方法,那么jQuery.fn又是什么呢?

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {//….
//……
};
原来就是原型。那么jQuery.fn.extend(object)扩展的就是jQuery对象(原型)的方法。
对象很好理解,如$(“#btn1″),这个语句就会生成一个jQuery类的实例对象。

那就是说,通过jQuery.fn.extend(object)扩展的方法,你得用在jQuery对象上面才行。也就是要这样用:

$('selector').xyz();

如果还是向1中那样用$.xyz();  明显是会出错的。

比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:

$.fn.extend({          
    alertWhileClick:function() {            
          $(this).click(function(){                 
                 alert($(this).val());           
           });           
     }       
});       
$("#input1").alertWhileClick();

实际上,你也可以在jQuery的原型上自行添加新的属性或方法,例如上面的扩展代码等价于:

$.fn.alertWhileClick=function(){            
          $(this).click(function(){                 
                 alert($(this).val());           
           });           
     };       
$("#input1").alertWhileClick();

总结:

jQuery.extend() 的调用并不会把方法扩展到对象的实例上,引用它的方法也需要通过jQuery类来实现,如jQuery.init(),而jQuery.fn.extend()的调用把方法扩展到了对象的prototype上,所以实例化一个jQuery对象的时候,它就具有了这些方法。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值