jquery原始碼解讀學習(一)

2021-10-08 08:39:44 字數 2237 閱讀 4107

1.(function(global,factory)

"use strict"

//嚴格模式if(

typeof module===

"object"

&&typeof module.exports===

"object"

)return

factory

(w)}

}else

})(typeof window!=

"undefined"

?window:

this

,function

(window,global)

//在匯入jq(但並有把自己的jq/$暴露給全域性)

//首先會把現有全域性中叫做$/jquery會替換全域性現有的 如zepto.js/jquery.js 都是$符號

var _jquery=window.jquery;

_$=window.$

//基於noconflict轉移jq對$/jquery的使用權

jquery.

noconflict

=function

(deep)

if(deep&&window.$==jquery)

return jquery;

}//在閉包中把一些私有的資訊暴露到全域性使用,return/window.***==***if(

typeof noglobal===

"undefined"

)return jquery;

})//區分瀏覽器環境和node環境

// 瀏覽器環境下,傳給global的是window

//node環境下傳給global是 global/模組

0.如何區分node環境和瀏覽器環境

如何區分是否支援commonjs規範

1.寫外掛程式要使用嚴格模式 「」use strict「」

2.在真實開發環境中,想讓自己寫的外掛程式不跟其他人有衝突,通過return,window形成乙個閉包

(或根據comonjs規範使用expor匯出模組)

3.多庫共存。

引入其他外掛程式zepto.js與jquery.js都用到

$

使用noconflict轉移使用權

先引入zrpto還用$符號,後引入的jquery另取乙個變數名

2.建立jqeury

這個過程中,最終jquery用的還是jquery這個類的例項,中間有點繞,將init作為中間轉,目的為了控制jquery執行的時候當做普通函式執行,並且能創造屬於自己的乙個例項

jquery充分體現函式的三種角色:普通函式、建構函式、普通物件

1.寫在原型上的方法是例項jq物件呼叫 $(』』.box』』)

2.寫在jquery物件的私有屬性方法 $.***() =>提供一些工具類方法

jqeruy.fn 原型上方法,例項都可呼叫 (′′

.box

′′).

addd

ir(j

qeru

y)普通

物件上方

法(不用

創造例項

)(''.box'').add dir( jqeruy)普通物件上方法(不用創造例項)

(′′.bo

x′′)

.add

dir(

jqer

uy)普

通物件上

方法(不

用創造實

例).unique

3給jquery原型和物件上擴充套件方法

jquery.extend()向物件上擴充套件方法,完善類庫

jquery.fn.extend()向原型上擴充套件方法,寫jq外掛程式

從$()獲取dom元素

避免多次建立例項,

jq each方法,遍歷資料和物件,如果迴圈中返回false,調出迴圈

jQuery原始碼解讀一

前言 我為什麼要看這個原始碼,很簡單,尋找我自己寫的js框架與jquery之間的差異,取長補短,最終目標是提高js程式設計的乙個眼界,看看別人是怎麼想的,因為自己乙個人的想法往往是片面的,也為了能讓自己的主觀漸漸接近客觀事實。雖然jquery框架能直接拿來用,但是對於偏愛研究的人來說,還是喜歡寫原生...

jquery原始碼解讀1

function global,factory returnfactory w else pass this if window is not defined yet typeofwindow undefined window this,function window,noglobal 其中形參gl...

jquery原始碼解讀之callbacks篇

callbacks模組通過維護乙個 函式列表,來實現對 函式地管理。其操作包括增加,觸發,移除,清空,禁用,鎖定等,是jquery.defrred,jquery.ajax,jquery.ready等依賴的底層模組。let cblist callbacks once memory let fn arg...