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 );