jquery源碼學(xué)習(xí)

1、jquery把所有源碼都放在一個(gè)匿名函數(shù)自執(zhí)行里面,這樣所有的變量和函數(shù)就都是局部的,他們就不會(huì)跟其他的代碼產(chǎn)生沖突,互相不影響。

因?yàn)槎际蔷植康?,所以就要?duì)外提供接口,這樣在外面才能調(diào)用到他們。

//$() jQuery()

window.$ = $
把對(duì)外提供的接口掛載到window底下,這樣的話就可以調(diào)用到了。

(function(){
  (21 , 94) 定義了一些變量和函數(shù)  jQuery = function(){}
  (96, 283) 給jQuery對(duì)象,添加一些方法和屬性
  (285 , 347) extend : jQuery的繼承方法
  (349 , 817) jQuery.extend():擴(kuò)展一些工具方法(靜態(tài)方法)
  (877 , 2856) Sizzle:復(fù)雜選擇器的實(shí)現(xiàn)
  (2880 , 3042) Callbacks:回調(diào)對(duì)象:對(duì)函數(shù)的統(tǒng)一管理
  (3043 , 3183) Deferred:延遲對(duì)象:對(duì)異步的統(tǒng)一管理(定時(shí)器、AJAX、創(chuàng)建script標(biāo)簽、等待DOM加載等)
  (3184 , 3295) support:功能檢測(cè)
  (3308 , 3652) data():數(shù)據(jù)緩存(獲取、刪除、設(shè)置)
  (3653 , 3797) queue():隊(duì)列管理
  (3803 , 4299) attr() prop() val() addCalss() 等:對(duì)元素屬性的操作
  (4300 , 5128) on() trigger():事件操作的相關(guān)方法
  (5140 , 6057) DOM操作:添加 刪除 獲取 包裝 DOM篩選
  (6058 , 6620) css():樣式的操作
  (6621 , 7854) 提交的數(shù)據(jù)和ajax():ajax() load() getJson()
  (7855 , 8584) animate():運(yùn)動(dòng)的方法
  (8585 , 8792) offset():位置與尺寸的方法
  (8804 , 8821) jQuery支持模塊化的模式
  (8826)  window.jQuery = window.$ = jQuery;
})();

jQuery就是一個(gè)基于面向?qū)ο蟮某绦?br> $('#div1').css();
$('#div1').html();

var arr = new Array();
arr.push();
arr.sort();

$('ul li + p input.class').css();

function fn1(){ alert(1); }
function fn2(){ alert(2); }
var cb = $.Callbacks();
cb.add(fn1);
cb.add(fn2);
cb.fire(); //1,2
cb.remove(fn2);
cs.fire(); //1

setTimeout(function(){
alert(1);
},1000);
alert(2);
//2 1
var fdf = $.Deferred;
setTimeout(function(){
alert(1);
dfd.resolve();
},1000);
dfd.done(function(){
alert(2);
})
//1 2

checkbox\radio
"" on old webKit,'on' elsewhere;
support.checkOn = input.value!==""

$('#div1').data('name','hello');//數(shù)據(jù)緩存的掛載機(jī)制,防止元素的內(nèi)存泄漏
$('#div1').data('name');//hello

$('#div1').animate({left:100});
$('#div1').animate({top:100});
$('#div1').animate({width:100});
每個(gè)運(yùn)動(dòng)的時(shí)間不一樣,怎樣保證一個(gè)運(yùn)動(dòng)完了才進(jìn)行下一個(gè),這時(shí)候就用到隊(duì)列,把三個(gè)都入隊(duì),一個(gè)執(zhí)行結(jié)束之后再進(jìn)行下一個(gè)。
對(duì)函數(shù)的順序管理也能用隊(duì)列

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容