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都用到
$jquery充分體現函式的三種角色:普通函式、建構函式、普通物件使用noconflict轉移使用權
先引入zrpto還用$符號,後引入的jquery另取乙個變數名
2.建立jqeury
這個過程中,最終jquery用的還是jquery這個類的例項,中間有點繞,將init作為中間轉,目的為了控制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...