jQ的鏈式寫法詳解:
jq的鏈式寫法很好用,直接打【.】就可以了,說起來JQ 是如何實現鏈式寫法的呢?
很多人都說jq的鏈式寫法就是 return this 那么return this代表了什么呢?
簡單說return this就是要返回下一個函數的執行父級(原諒我語文不好,找不到一個更好的詞代替父級這倆個字。)
那么下面寫個例子,來實現一個簡單的鏈式寫法:
1 function a(){ 2 // 執行一些操作。 3 console.log(111); 4 return window; 5 } 6 function b(){ 7 console.log(22); 8 //執行一些操作。 9 return window; 10 } 11 a().b();
這算實現了鏈式寫法吧? 我返回下一個函數的父級,當a函數執行完后,返回window,這樣下個b函數也可以進行操作,當然這個在項目中不這么寫。
在寫個項目中可以使用的鏈式寫法:
1 function a(){ 2 console.log(1); 3 return this; 4 } 5 function b(){ 6 console.log(2); 7 return this; 8 } 9 var obj={ 10 a:a, 11 b:b 12 } 13 obj.a().b();
那么jq是如何實現鏈式寫法的呢?肯定不是這么簡單對吧?
介紹下jq是如何實現鏈式寫法的。
在jq中有這么一行代碼定義了
1 jQuery = function (selector, context) { 2 return new jQuery.fn.init(selector, context, rootjQuery); 3 },
jQuery.fn = jQuery.prototype = {}
jQuery.fn.init.prototype = jQuery.fn;
簡單說這幾行代碼實現了JQ的鏈式寫法定義一個函數,return 一個實例,init函數里進行了處理初始化操作,比如選擇器,拼接字符串等等,這里不一一介紹。
最后再將jq的prototype 賦值給init方法的prototype。
這樣就實現了鏈式寫法。在工作中也經常會使用到JQ的鏈式寫法,比如說:
在做移動端項目的時候,通常大家會引入zepto。但是zepto大約27k左右,在移動端已經很大了,那么我們就有必要不去引入zepto。而是我們單獨寫一個常用方法庫。
並且使用鏈式寫法,操作簡單,而且還是專門應對於我們的項目。所以推薦大家不引入zepto。而是自己去寫個常用方法庫。