-
任何庫(kù)與框架設(shè)計(jì)的第一個(gè)要點(diǎn)就是解決命名空間與變量污染的問(wèn)題。jQuery就是利用了JavaScript函數(shù)作用域的特性,采用立即調(diào)用表達(dá)式包裹了自身的方法來(lái)解決這個(gè)問(wèn)題。查看全部
-
在JavaScript世界中函數(shù)作為“一等公民”,它不僅擁有一切傳統(tǒng)函數(shù)的使用方式(聲明和調(diào)用),而且可以做到像簡(jiǎn)單值一樣賦值、傳參、返回,這樣的函數(shù)也稱之為第一級(jí)函數(shù)。不僅如此,而且還可以通過(guò)操作符new來(lái)充當(dāng)類的構(gòu)造器查看全部
-
組件開(kāi)發(fā)為了保證組件可以在不同的項(xiàng)目中都適用,其必須是對(duì)其常用功能抽象出來(lái)加以實(shí)現(xiàn),絕不會(huì)包含具體的業(yè)務(wù)邏輯而某一特定的項(xiàng)目使用者在其業(yè)務(wù)場(chǎng)景中使用組件時(shí)不可避免的要加入不同場(chǎng)景的業(yè)務(wù)邏輯。查看全部
-
瀏覽器從右到左進(jìn)行解析選擇器 只有在匹配時(shí),才會(huì)不斷向上找父節(jié)點(diǎn)進(jìn)行驗(yàn)證。 因?yàn)槠ヅ涞那闆r遠(yuǎn)遠(yuǎn)低于不匹配的情況,所以逆向匹配帶來(lái)的優(yōu)勢(shì)是巨大的查看全部
-
fn與jQuery其實(shí)是2個(gè)不同的對(duì)象,在之前有講解:jQuery.extend 調(diào)用的時(shí)候,this是指向jQuery對(duì)象的(jQuery是函數(shù),也是對(duì)象!),所以這里擴(kuò)展在jQuery上。而jQuery.fn.extend 調(diào)用的時(shí)候,this指向fn對(duì)象查看全部
-
方法是共享的,并且實(shí)例方法取于靜態(tài)方法,2個(gè)構(gòu)造器是完全隔離的 ,這個(gè)要如何處理? 看看jQuery給的方案: 畫(huà)龍點(diǎn)睛的一處init.prototype = jQuery.fn,把jQuery.prototype原型的引用賦給jQuery.fn.init.prototype的原型,這樣就把2個(gè)構(gòu)造器的原型給關(guān)聯(lián)起來(lái)了。 ajQuery.fn = ajQuery.prototype = { name: 'aaron', init: function(selector) { this.selector = selector; return this; }, constructor: ajQuery } ajQuery.fn.init.prototype = ajQuery.fn 這段代碼就是整個(gè)結(jié)構(gòu)設(shè)計(jì)的最核心的東西了,有這樣的一個(gè)處理,整個(gè)結(jié)構(gòu)就活了!不得不佩服作者的設(shè)計(jì)思路,別具匠心。查看全部
-
通過(guò)new操作符構(gòu)建一個(gè)對(duì)象,一般經(jīng)過(guò)四步: A.創(chuàng)建一個(gè)新對(duì)象 B.將構(gòu)造函數(shù)的作用域賦給新對(duì)象(所以this就指向了這個(gè)新對(duì)象) C.執(zhí)行構(gòu)造函數(shù)中的代碼 D.返回這個(gè)新對(duì)象查看全部
-
ajQuery.prototype.init.prototype = ajQuery.prototype;查看全部
-
無(wú)new格式 var $$ = ajQuery = function(selector) { if(!(this instanceof ajQuery)){ return new ajQuery(selector); } this.selector = selector; return this }查看全部
-
如果瀏覽器存在 document.onreadystatechange 事件,當(dāng)該事件觸發(fā)時(shí),如果 document.readyState=complete 的時(shí)候,可視為 DOM 樹(shù)已經(jīng)載入。不過(guò),這個(gè)事件不太可靠,比如當(dāng)頁(yè)面中存在圖片的時(shí)候,可能反而在 onload 事件之后才能觸發(fā),換言之,它只能正確地執(zhí)行于頁(yè)面不包含二進(jìn)制資源或非常少或者被緩存時(shí)作為一個(gè)備選吧。 針對(duì)IE的加載檢測(cè) Diego Perini 在 2007 年的時(shí)候,報(bào)告了一種檢測(cè) IE 是否加載完成的方式,使用 doScroll 方法調(diào)用,詳情可見(jiàn)http://javascript.nwbox.com/IEContentLoaded/。 原理就是對(duì)于 IE 在非 iframe 內(nèi)時(shí),只有不斷地通過(guò)能否執(zhí)行 doScroll 判斷 DOM 是否加載完畢。在上述中間隔 50 毫秒嘗試去執(zhí)行 doScroll,注意,由于頁(yè)面沒(méi)有加載完成的時(shí)候,調(diào)用 doScroll 會(huì)導(dǎo)致異常,所以使用了 try -catch 來(lái)捕獲異常。查看全部
-
DOM文檔的加載步驟 (1) 解析HTML結(jié)構(gòu)。 (2) 加載外部腳本和樣式表文件。 (3) 解析并執(zhí)行腳本代碼。 (4) 構(gòu)造HTML DOM模型。//ready (5) 加載圖片等外部文件。 (6) 頁(yè)面加載完畢。//load查看全部
-
工廠模式 jQuery的無(wú)new構(gòu)建原理查看全部
-
1、window和undefined都是為了減少變量查找所經(jīng)過(guò)的scope作用域。當(dāng)window通過(guò)傳遞給閉包內(nèi)部之后,在閉包內(nèi)部使用它的時(shí)候,可以把它當(dāng)成一個(gè)局部變量,顯然比原先在window scope下查找的時(shí)候要快一些。 2、undefined也是同樣的道理,其實(shí)這個(gè)undefined并不是JavaScript數(shù)據(jù)類型的undefined,而是一個(gè)普普通通的變量名。只是因?yàn)闆](méi)給它傳遞值,它的值就是undefined,undefined并不是JavaScript的保留字。查看全部
-
jquery五大塊:選擇器,DOM操作,事件,AJAX,動(dòng)畫(huà)<br> 模塊化,單一職責(zé)SRP,解耦查看全部
-
DOM文檔加載的步驟: 要想理解為什么ready先執(zhí)行,load后執(zhí)行就要先了解下DOM文檔加載的步驟: (1) 解析HTML結(jié)構(gòu)。 (2) 加載外部腳本和樣式表文件。 (3) 解析并執(zhí)行腳本代碼。 (4) 構(gòu)造HTML DOM模型。//ready (5) 加載圖片等外部文件。 (6) 頁(yè)面加載完畢。//load查看全部
舉報(bào)
0/150
提交
取消