jquery.fn.extend與jquery.extend
jquery.fn.extend與jquery.extend
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中到處體現這一點
相關文章
- jQuery.extend和jQuery.fn.extend的區別jQuery
- jQuery.extend()jQuery
- jQuery.fn.extend()jQuery
- undefined與null與?. ??UndefinedNull
- &與&&, |與||區別
- 進與穩,時代與技術,新基建與華為雲
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行
- Promise與async/await與GeneratorPromiseAI
- in與exist , not in與not exist 的區別
- Python學習筆記 5.0 元組 與 字典 與 集合 與 公共操作 與 推導式Python筆記
- 聊聊執行緒與程式 & 阻塞與非阻塞 & 同步與非同步執行緒非同步
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- forms元件補充與ModelForm簡單使用與cookie與sessionORM元件CookieSession
- PHP 與 Swoole 淺析與學習PHP
- PySpark與GraphFrames的安裝與使用Spark
- PHPCookie與Session的使用與區別PHPCookieSession
- 同步與非同步 阻塞與非阻塞非同步
- define與typedef區別與聯絡
- WAS與IHS整合的安裝與配置
- 漏型與源型、PNP與NPN
- Iterator與Iterable(迭代器與可迭代)
- js == 與 ===JS
- Process與Socket,Select與Accept關係
- cookie與session的區別與聯絡CookieSession
- Java:運用while()與do....while與for()JavaWhile
- 陣列與字串方法與相互轉換陣列字串
- Session與Cookie的區別與聯絡SessionCookie
- cookie與session的自己思考與解釋CookieSession
- GRPC與 ProtoBuf 的理解與總結RPC
- 同步與阻塞的區別與聯絡
- 關於 in與exist , not in與not exist 的區別
- rpm與yum,at與crontab,sed命令使用
- 詳解not in與not exists的區別與用法
- memcache與memcached的區別與安裝
- 病毒預防與硬碟使用與維護硬碟
- UITableView與WKWebView的巢狀與適配UIWebView巢狀
- hive與hbase的聯絡與區別Hive
- JDBC與ODBC的區別與應用JDBC