-
ready與load誰(shuí)先執(zhí)行: 大家在面試的過(guò)程中,經(jīng)常會(huì)被問(wèn)到一個(gè)問(wèn)題:ready與load那一個(gè)先執(zhí)行,那一個(gè)后執(zhí)行?答案是ready先執(zhí)行,load后執(zhí)行。 DOM文檔加載的步驟: 要想理解為什么ready先執(zhí)行,load后執(zhí)行就要先了解下DOM文檔加載的步驟: (1) 解析HTML結(jié)構(gòu)。 (2) 加載外部腳本和樣式表文件。 (3) 解析并執(zhí)行腳本代碼。 (4) 構(gòu)造HTML DOM模型。//ready (5) 加載圖片等外部文件。 (6) 頁(yè)面加載完畢。//load查看全部
-
jQuery對(duì)象的構(gòu)建如果在性能上考慮,所以就必須采用原型式的結(jié)構(gòu): jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); } jQuery.fn = jQuery.prototype = { init:function(){ return this }, jquery: version, constructor: jQuery, ……………… } var a = $() ; 使用原型結(jié)構(gòu),性能上是得到了優(yōu)化,但是ajQuery類這個(gè)結(jié)構(gòu)與目標(biāo)jQuery的結(jié)構(gòu)的還是有很大不一致: ? 沒(méi)有采用new操作符; ? return返回的是一個(gè)通過(guò)new出來(lái)的的對(duì)象查看全部
-
$ === jQuery true $ function m(a, b) jQuery.noConflict() function m(a, b) $ undefined $ === jQuery false jQuery function m(a, b)查看全部
-
一些小例子查看全部
-
ready與load的區(qū)別就在于資源文件的加載,ready構(gòu)建了基本的DOM結(jié)構(gòu),所以對(duì)于代碼來(lái)說(shuō)應(yīng)該越快加載越好。在一個(gè)高速瀏覽的時(shí)代,沒(méi)人愿意等待答案。假如一個(gè)網(wǎng)站頁(yè)面加載超過(guò)4秒,不好意思,你1/4的用戶將面臨著流失,所以對(duì)于框架來(lái)說(shuō)用戶體驗(yàn)是至關(guān)重要的,我們應(yīng)該越早處理DOM越好,我們不需要等到圖片資源都加載后才去處理框架的加載,圖片資源過(guò)多l(xiāng)oad事件就會(huì)遲遲不會(huì)觸發(fā)。查看全部
-
ajQuery.fn.say定義了靜態(tài)say方法。而init方法相當(dāng)于應(yīng)用于實(shí)例。通過(guò)ajQuery.fn.init.prototype = ajQuery.fn使得實(shí)例可以調(diào)用say方法。這樣既實(shí)現(xiàn)了構(gòu)造器分離,又能共享靜態(tài)實(shí)例方法。查看全部
-
首先我們看jQuery的入口都是統(tǒng)一的$, 通過(guò)傳遞參數(shù)的不同,實(shí)現(xiàn)了9種方法的重載: 1. jQuery([selector,[context]]) 2. jQuery(element) 3. jQuery(elementArray) 4. jQuery(object) 5. jQuery(jQuery object) 6. jQuery(html,[ownerDocument]) 7. jQuery(html,[attributes]) 8. jQuery() 9. jQuery(callback)查看全部
-
Javascript 中的 undefined 并不是作為關(guān)鍵字,因此可以允許用戶對(duì)其賦值。查看全部
-
jQuery使用()將匿名函數(shù)括起來(lái),然后后面再加一對(duì)小括號(hào)(包含參數(shù)列表),那么這小括號(hào)能把我們的表達(dá)式組合分塊,并且每一塊(也就是每一對(duì)小括號(hào)),都有一個(gè)返回值。這個(gè)返回值實(shí)際上也就是小括號(hào)中表達(dá)式的返回值。所以,當(dāng)我們用一對(duì)小括號(hào)把匿名函數(shù)括起來(lái)的時(shí)候,實(shí)際上小括號(hào)返回的,就是一個(gè)匿名函數(shù)的Function對(duì)象。查看全部
-
jQuery 整體架構(gòu)查看全部
-
全局變量是魔鬼, 匿名函數(shù)可以有效的保證在頁(yè)面上寫入JavaScript,而不會(huì)造成全局變量的污染,通過(guò)小括號(hào),讓其加載的時(shí)候立即初始化,這樣就形成了一個(gè)單例模式的效果從而只會(huì)執(zhí)行一次。查看全部
-
觀察者模式 (pub/sub) 的背后,總的想法是在應(yīng)用程序中增強(qiáng)松耦合性。并非是在其它對(duì)象的方法上的單個(gè)對(duì)象調(diào)用。一個(gè)對(duì)象作為特定任務(wù)或是另一對(duì)象的活動(dòng)的觀察者,并且在這個(gè)任務(wù)或活動(dòng)發(fā)生時(shí),通知觀察者。觀察者也被叫作訂閱者(Subscriber),它指向被觀察的對(duì)象,既被觀察者(Publisher 或 subject)。當(dāng)事件發(fā)生時(shí),被觀察者(Publisher)就會(huì)通知觀察者(subscriber)。查看全部
-
我們換成jQuery提供的方式: var callbacks = $.Callbacks(); callbacks.add(function() { alert('a'); }) callbacks.add(function() { alert('b'); }) callbacks.fire(); //輸出結(jié)果: 'a' 'b' 是不是便捷很多了,代碼又很清晰,所以Callbacks它是一個(gè)多用途的回調(diào)函數(shù)列表對(duì)象,提供了一種強(qiáng)大的方法來(lái)管理回調(diào)函數(shù)隊(duì)列。 那么我們使用回調(diào)函數(shù),總的來(lái)說(shuō)弱化耦合,讓調(diào)用者與被調(diào)用者分開,調(diào)用者不關(guān)心誰(shuí)是被調(diào)用者,所有它需知道的,只是存在一個(gè)具有某種特定原型、某些限制條件的被調(diào)用函數(shù)。查看全部
-
例如一: jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); }); 例如二: jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { //處理的代碼 }); 可以看出上面代碼方法,針對(duì)相同的功能,節(jié)約了大量的代碼空間。查看全部
-
jQuery.each靜態(tài)方法: each: function(obj, callback, args) { var value, i = 0, length = obj.length, isArray = isArraylike(obj); if (args) { if (isArray) { for (; i < length; i++) { value = callback.apply(obj[i], args); if (value === false) { break; } } } else { for (i in obj) { value = callback.apply(obj[i], args); if (value === false) { break; } } } 實(shí)現(xiàn)原理幾乎一致,只是增加了對(duì)于參數(shù)的判斷。對(duì)象用for in遍歷,數(shù)組用for遍歷。 jQuery可以是多個(gè)合集數(shù)組DOM,所以在處理的時(shí)候經(jīng)常就針對(duì)每一個(gè)DOM都要單獨(dú)處理,所以一般都需要調(diào)用this.each 方法,如下代碼: dequeue: function( type ) { return this.each(function() { jQuery.dequeue( this, type ); }); }, 迭代器除了單純的遍歷,在jQuery內(nèi)部的運(yùn)用最多的就是接口的抽象合并,相同功能的代碼功能合并處理:查看全部
舉報(bào)
0/150
提交
取消