$.extend()和$.fn.extend()

1、$.extend()

1.1 定义

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

1.2 语法

$.extend(target, object1 , objectN... )
$.extend(deep, target, object1 , objectN...)

注意:

1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

deep 可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。
target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
object1   可选。 Object类型 第一个被合并的对象。
objectN 可选。 Object类型 第N个被合并的对象。
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
var object1 = {
    apple: 0,
    banana: { weight: 52, price: 100 },
    cherry: 97
};
var object2 = {
    banana: { price: 200 },
    durian: 100
}; 
// 将 object2 递归合并到 object1中
$.extend( true, object1, object2 ); //=> {"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}

 2、jQuery.fn.extend()

2.1 定义

$.fn.extend() 函数为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法)。

2.2 语法

$.fn.extend(object)

object:Object类型 指定的对象,用来合并到jQuery的原型对象上。

jQuery代码:

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

即:jQuery.fn是jQuery的原型对象。

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

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

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

jQuery.fn.extend = jQuery.prototype.extend

(function( $ ){
$.fn.tooltip = function( options ) {
};
//等价于
var tooltip = {
function(options){
}
};
$.fn.extend(tooltip) = $.prototype.extend(tooltip) = $.fn.tooltip
})( jQuery );
原文地址:https://www.cnblogs.com/fydxx/p/6673726.html