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中到處體現這一點
相關文章
- undefined與null與?. ??UndefinedNull
- Promise與async/await與GeneratorPromiseAI
- for of 與 for in
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行
- forms元件補充與ModelForm簡單使用與cookie與sessionORM元件CookieSession
- Python學習筆記 5.0 元組 與 字典 與 集合 與 公共操作 與 推導式Python筆記
- 聊聊執行緒與程式 & 阻塞與非阻塞 & 同步與非同步執行緒非同步
- 進與穩,時代與技術,新基建與華為雲
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- rpm與yum,at與crontab,sed命令使用
- GRPC與 ProtoBuf 的理解與總結RPC
- Process與Socket,Select與Accept關係
- PHP 與 Swoole 淺析與學習PHP
- Iterator與Iterable(迭代器與可迭代)
- 漏型與源型、PNP與NPN
- PySpark與GraphFrames的安裝與使用Spark
- css(二):高度與文件流,line-box與box,寬度,position與CSS
- js == 與 ===JS
- A與B
- cookie與session的區別與聯絡CookieSession
- Tensor與tensor深入分析與異同
- 陣列與字串方法與相互轉換陣列字串
- python加密與解密,加簽與驗籤Python加密解密
- Session與Cookie的區別與聯絡SessionCookie
- Excutors 與 ThreadPoolExcutor 的關係與區別thread
- JRE與JDK的區別與聯絡JDK
- Docker與containerd的關係與區別DockerAI
- Java:運用while()與do....while與for()JavaWhile
- 《山海旅人》與它的詩與遠方
- cookie與session的自己思考與解釋CookieSession
- 【Linux】mysql下載與安裝與重置密碼與建立資料庫LinuxMySql密碼資料庫
- synchronized與Lock的區別與使用詳解synchronized
- 資料探勘與分析 概念與演算法演算法
- Scala與Java差異(五)之Map與TupleJava
- 程式碼與質量的思考與隨筆
- ElasticSearch與SpringBoot的整合與JPA方法的使用ElasticsearchSpring Boot
- 10 建立SSL與RSA證書與金鑰
- 核心與裝置樹編譯與燒寫編譯
- mysql與redis的區別與使用場景MySqlRedis