jQuery實現原理

2021-09-24 07:25:07 字數 1611 閱讀 1410

本文講述的是怎樣在不使用js原生和jquery提供的api,實現和jquery一樣的效果。

舉例:addclass(新增類名)

複製**

第一步:獲取物件

如果我們要給第二個li加類名:

var litag=document.queryselector('ul li:nth-child(2)')複製**

第二步:給這個li新增類名

litag.classlist.add('checkli')複製**

第三步:封裝成乙個函式方便呼叫

function

addclass

()複製**

第四步:把變數換成引數傳入

function addclass(selector,newclassname)複製**

第五步:呼叫函式,新增類名

addclass.call('undefined','ul>li:nth-child(2)','red');

複製**

如果想要選擇多個li,就要變成這樣:

function addclass(selector,newclassname)

***.addclass.call(***,'red')//此處***就是this,也可以直接寫作this複製**

2:把這個方法再包一層方法名再呼叫

var addclass2=function(selector)else

return

}} var litag=addclass2.call('undefined',"#***");

litag.addclass.call('undefined','red');

複製**

如果把上面的addclass2換成jquery,再用$替換jquery,如下所示:

window.jquery=function(nodeorselector)else

return ,

settext:function(text) }}

window.$ = jquery;

var $div = $('div')

$div.addclass('red')//給所有div新增類名

$div.settext('hi')//給所有div設定內容文字

複製**

以上即jquery實現原理,jquery的本質是乙個建構函式,接受我們傳入的引數,然後根據js的原生api操作引數對應的節點,返回乙個結果。

call用法:

call(引數1,引數2),call的第乙個引數就是this,剩下的引數都是arguments,this一般指向呼叫函式的那個物件,使用call時第乙個引數不可省略,沒有特別說明時可以設定undefined,在普通模式下,如果this是undefined,瀏覽器會自動把this變成window;如果是嚴格模式下,this就是undefined本身。

瀑布流實現原理( jQuery 實現 )

1.什麼是瀑布流 為什麼要使用瀑布流 由於尺寸的大小不同,我們為了用最合適的比例來展示,就需要讓自己去確定最終的高度。但是自定義高度會使得每一項的高度不一致而使頁面顯得混亂,故我們可以使用瀑布流來確定元素的定位位置。瀑布流的定義 元素自判斷顯示區域中,那一列的高度最低,則在那一列顯示。2.瀑布流具體...

jquery鏈式DOM的實現原理

dom鏈式呼叫的處理 1.節約js 2.所返回的都是同乙個物件,可以提高 的效率。dom的必要點 1.通過簡單擴充套件原型方法並通過return this的形式來實現跨瀏覽器的鏈式呼叫。2.利用js下的簡單工廠模式,來將所有對於同乙個dom物件的操作指定同乙個例項。定義乙個js類function d...

jquery 中jsonp的實現原理

在同源策略下,在某個伺服器下的頁面是無法獲取到該伺服器以外的資料的,即一般的 ajax 是不能進行跨域請求的。但 img iframe script 等標籤是個例外,這些標籤可以通過 src屬性請求到其他伺服器上的資料。利用 script 標籤的開放策略,我們可以實現跨域請求資料,當然這需要伺服器端...