jquery為開發插件提拱了兩個方法,分别是:
javascript代碼
jquery.fn.extend(object);
jquery.extend(object);
jquery.extend(object); 為擴充jquery類本身.為類添加新的方法。
jquery.fn.extend(object);給jquery對象添加方法。
fn 是什麼東西呢。檢視jquery代碼,就不難發現。
javascript代碼
jquery.fn = jquery.prototype = {
init: function( selector, context ) {//….
//……
};
原來 jquery.fn = jquery.prototype.對prototype肯定不會陌生啦。
雖然 javascript 沒有明确的類的概念,但是用類來了解它,會更友善。
jquery便是一個封裝得非常好的類,比如我們用 語句 $(“#btn1″) 會生成一個 jquery類的執行個體。
jquery.extend(object); 為jquery類添加添加類方法,可以了解為添加靜态方法。如:
xml/html代碼
$.extend({
add:function(a,b){return a+b;}
});
便為 jquery 添加一個為 add 的 “靜态方法”,之後便可以在引入 jquery 的地方,使用這個方法了,
$.add(3,4); //return 7
jquery.fn.extend(object);
對jquery.prototype進得擴充,就是為jquery類添加“成員函數”。jquery類的執行個體可以使用這個“成員函數”。
比如我們要開發一個插件,做一個特殊的編輯框,當它被點選時,便alert 目前編輯框裡的内容。可以這麼做:
$.fn.extend({
alertwhileclick:function(){
$(this).click(function(){
alert($(this).val());
});
}
$(“#input1″).alertwhileclick(); //頁面上為:<input id=”input1″
type=”text”/>
$(“#input1″) 為一個jquery執行個體,當它調用成員方法
alertwhileclick後,便實作了擴充,每次被點選時它會先彈出目前編輯裡的内容。
真實的開發過程中,當然不會做這麼小白的插件,事實上jquery提拱了豐富的操作文檔,事件,css
,ajax、效果的方法,結合這些方法,便可以開發出更加 niubility 的插件。
注意:
在這裡還有一個特殊的地方,就是在函數開頭的地方有jquery.extend =
jquery.fn.extend,而在程式的前面已經将jquery.prototype指派給jquery.fn了,是以在後面的調用中會出現
jquery.extend()和jquery.fn.extend()的不同調用,這兩個方法調用産生的結果也不一樣,jquery.extend()
的調用并不會把方法擴充到對象的執行個體上,引用它的方法也需要通過jquery類來實作,如jquery.init(),而
jquery.fn.extend()的調用把方法擴充到了對象的prototype上,是以執行個體化一個jquery對象的時候,它就具有了這些方法,這
是很重要的,在jquery.js中到處展現這一點