理解jquery的$.extend()、$.fn和$.fn.extend()

转载 2015年11月19日 22:25:57

原文 http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend();

jQuery.extend();

jQuery.fn

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {//….
//……
};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。

虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。

jQuery便是一个封装得非常好的类,比如我们用 语句 $(“#btn1″) 会生成一个 jQuery类的实例。

jQuery.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法。如:

jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
jQuery.min(2,3); //  2 
jQuery.max(4,5); //  5

Objectj Query.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" }

jQuery.fn.extend(object);

对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

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

$.fn.extend({          
    alertWhileClick:function() {            
          $(this).click(function(){                 
                 alert($(this).val());           
           });           
     }       
});       
$("#input1").alertWhileClick(); // 页面上为:    

$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

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

jQuery.fn.extend = jQuery.prototype.extend

你可以拓展一个对象到jQuery的 prototype里去,这样的话就是插件机制了。

(function( $ ){
$.fn.tooltip = function( options ) {
};
//等价于
var tooltip = {
function(options){
}
};
$.fn.extend(tooltip) = $.prototype.extend(tooltip) = $.fn.tooltip
})( jQuery );

相关文章推荐

jquery $.fn.extend

  • 2016年09月04日 20:07
  • 32KB
  • 下载

jquery的.fn.extend使用方法

jQuery为开发插件提拱了两个方法,分别是: $.fn.extend()和$.extend(); 下面来看下两个方法的具体使用: 1)  $.extend() extend(data,...

JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)

理解$.extend(),与$.fn.extend()方法区别 1.$.extend()方法 $.extend()方法在JQuery中有两个用法,第一次是扩展方法, 第二个方法是 ...

jquery 插件开发 $.extend $.fn.extend 全局对象 全局函数

Query插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数, ...

Jquery $.fn.extend与 $.extend区别

$.extend(obj);是为了扩展jquery本身,为类添加新的方法    $.fn.extend(obj);给JQUERY对象添加方法。 如(1):    $.extend({ ...

jquery的extend和fn.extend

jQuery为开发插件提拱了两个方法,分别是:      jQuery.fn.extend(object);   jQuery.extend(object);      jQuery.e...

jquery的$.extend和$.fn.extend的使用详解

 Jquery.extend() 可以理解成为 Jquery 类添加静态方法,扩展方法原型是: 1 extend(dest,src1...

jquery扩展:$.extend()和$.fn.extend()

通过jquery的扩展,我们可以灵活的使用jquery,来写一些自定义插件,丰富自己代码的功能。 jquery的扩展可以分为两个部分:类的扩展和对象的扩展。jquery类的扩展:$.extend()...

JQuery $.extend 与$.fn.extend

JQuery $.extend 与$.fn.extendJQuery的extend方法可以为对象拓展新的方法和属性。作为一种插件机制,具有很大的灵活性。$.extend的使用方法如下: var ...

jQuery扩展插件方法 $.extend()和$.fn.extend()

jQuery扩展插件方法 $.extend()和$.fn.extend()
  • Dong_PT
  • Dong_PT
  • 2016年03月19日 17:55
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解jquery的$.extend()、$.fn和$.fn.extend()
举报原因:
原因补充:

(最多只允许输入30个字)