jquery庫中有可以進行實力擴充套件也可以進行物件屬性的擴充套件,所以在對jquery進行擴充套件時,要注意是擴充套件類的屬性還是例項的屬性。(下面的jquery均可以利用$進行替代)
在進行擴充套件前先介紹下jquery中對物件進行擴充套件的方法jquery.extend,
jquery.extend([deep], target, object1, [objectn])
(1)當其中只有乙個引數時表示的是對jquery類的擴充套件,即在類上新增行的屬性和方法
$.extend(
})//可以通過$.test的方式進行呼叫
(2)當其中的引數包含多個物件時,表示的是將多個物件進行合併到第乙個物件中,同時返回第乙個物件(修改後)。如果想要返回的乙個新的物件而不影響引數,則設定第乙個引數為{},jquery.extend({},obj1,obj2….)
var css1=
var css2=
jquery.extend(css1,css2)
//css1 =
(3)上面的方法是屬於淺拷貝,既不會對物件中的成員物件進行擴充套件拷貝,如果物件屬性中有引用型別的資料,則會導致直接以引用進行賦值,則可能導致物件間的香相互影響,如果想要實現深拷貝,則可以設定第乙個引數為true進行
先看淺拷貝
jquery.extend(
},
}
); //結果: }
深拷貝
jquery.extend( true,
},
}
); //結果: }
jquery.fn.extend只能對例項進行擴充套件而不能對普通的物件實現上面的功能。
一、給jquery新增類方法(均要通過類名進行呼叫)
(1)直接在類名上新增
jquery.add = function
(a,b)
(2)利用$.extend方式進行擴充套件(即給extend傳遞乙個物件引數即是對jquery的擴充套件)
jquery.extend(,
sub:function
(a,b)
})
(3)利用命名空間
jquery.plugins = ,
function
sub(a,b)
}//利用jquery.plugins.add的方式進行呼叫
二、例項屬性進行擴充套件(其實是利用了原型繼承,利用例項進行呼叫)
(1)直接對原型鏈進行擴充套件
jquery.fn.add = function
(a,b)
//呼叫方式 $("a").add(1,2)
(2)利用jquery.fn.extend
jquery.fn.extend(,
sub:function
(a,b)
})
上面的引數可以通過$.extend的方式進行擴充套件而不用寫死
jquery.fn.attr =function
(options) ;
opt = $.extend({},options,default);
/*在做一些邏輯操作*/
}
jquery本身就是利用閉包的方式在window物件上進行擴充套件新增乙個全域性的物件,對jquery進行擴充套件時可以考慮想同類似的方式。
同時通常對例項方法進行擴充套件的時候都會利用閉包的形式進行擴充套件,防止變數之間的相互汙染
(function
($) ,
$.fn.ownfun = function
(options) ,options,default);
/*邏輯處理*/
}})(jquery)
筆記 擴充套件jQuery之示例
以下的示例基於同一段 取自 實時使用者體驗 的示例 當移除或新增乙個元素時,一般高亮元素的背景以提示使用者注意,原始示例 this is a layer jquery函式外掛程式 一般是針對工具函式的封閉,在應用中以jquery統一的模式呼叫 this is a layer jquery集合外掛程式...
jquery擴充套件(
如何寫乙個jquery 之前看了好多網上的例子,講真,不知其所以然,生搬硬套。其實自己還是一臉的懵b,想想還真的有必要仔細研讀一下書籍。言歸正傳,正式巴拉巴拉筆記 擴充套件jquery什麼鬼?三個問號表示當時真的不懂 很簡單的說 既然可以呼叫jq裡的 例如 addclass class fn 等等方...
jQuery擴充套件
jquery有乙個方法特別有用,extend。jquery自身通過該方法對jquery進行擴充套件,在api中使用者也可以根據需要對jquery擴充套件。jquery.extend jquery.fn.extend function i 1,length arguments.length,deep ...