jQuery.fn.extend(object)與jQuery.extend(object) 對JQuery進行擴展

文章轉載自:http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html ,略有補充以及修改

1.不同

雖然js沒有類的概念,但這裏方便理解可以把jQuery看成是一個封裝好的類(類名就是jQuery,或者用$),裏面有各種成員變量,成員函數。用jq選擇器可以生成一個jq對象(如$("#test"))。

以下$代替jQuery。

$.fn.extend()=$.prototype.extend(),擴展的內容可以被任何jq對象使用。

$.extend(object),擴展的函數可以被jq“類”直接使用。可以理解爲添加靜態方法~(注意參數,只對應2 .1)的情形)

2.$.extend()

1) $.extend(object);

說明:給jq“類”擴展靜態方法

例:

$.extend({

max:function(a,b){ return a>b?a:b;},

min:function(a,b){return a<b?a:b;}

});

$.max(2,3);//3

$.min(2,3);//2

2)$.extend(targetObject,mergeObject_1,mergeObject_2,...,mergeObject_N)

說明:merge的內容合併至target,相同的鍵後者的值覆蓋前者的值;會更改target並且返回更改後的target。

相較於1)來說,2)更加常用!

例:

var obj_target={name:"ru",age:"22"};

$.extend(obj_target,{name:"di",sex:"female"});

console.log(obj_target) //{name:"di",age:"22",sex:"female"};

3.$.fn.extend()

可以理解爲插件機制,想要讓jq對象都擁有某種自定義方法的話就可以用這種辦法,閱讀jquery源碼會發現這種方法很常見!

4.小結

其實$.fn.extend()和$.extend()沒有必要去比較,兩個都可擴展方法,但後者是靜態方法;前者主要用於擴展插件,後者主要用於合併對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章