-
ready與load誰先執行: 大家在面試的過程中,經常會被問到一個問題:ready與load那一個先執行,那一個后執行?答案是ready先執行,load后執行。 DOM文檔加載的步驟: 要想理解為什么ready先執行,load后執行就要先了解下DOM文檔加載的步驟: (1) 解析HTML結構。 (2) 加載外部腳本和樣式表文件。 (3) 解析并執行腳本代碼。 (4) 構造HTML DOM模型。//ready (5) 加載圖片等外部文件。 (6) 頁面加載完畢。//load查看全部
-
jQuery對象的構建如果在性能上考慮,所以就必須采用原型式的結構: 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 = $() ; 使用原型結構,性能上是得到了優化,但是ajQuery類這個結構與目標jQuery的結構的還是有很大不一致: ? 沒有采用new操作符; ? return返回的是一個通過new出來的的對象查看全部
-
$ === jQuery true $ function m(a, b) jQuery.noConflict() function m(a, b) $ undefined $ === jQuery false jQuery function m(a, b)查看全部
-
一些小例子查看全部
-
ready與load的區別就在于資源文件的加載,ready構建了基本的DOM結構,所以對于代碼來說應該越快加載越好。在一個高速瀏覽的時代,沒人愿意等待答案。假如一個網站頁面加載超過4秒,不好意思,你1/4的用戶將面臨著流失,所以對于框架來說用戶體驗是至關重要的,我們應該越早處理DOM越好,我們不需要等到圖片資源都加載后才去處理框架的加載,圖片資源過多load事件就會遲遲不會觸發。查看全部
-
ajQuery.fn.say定義了靜態say方法。而init方法相當于應用于實例。通過ajQuery.fn.init.prototype = ajQuery.fn使得實例可以調用say方法。這樣既實現了構造器分離,又能共享靜態實例方法。查看全部
-
首先我們看jQuery的入口都是統一的$, 通過傳遞參數的不同,實現了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 并不是作為關鍵字,因此可以允許用戶對其賦值。查看全部
-
jQuery使用()將匿名函數括起來,然后后面再加一對小括號(包含參數列表),那么這小括號能把我們的表達式組合分塊,并且每一塊(也就是每一對小括號),都有一個返回值。這個返回值實際上也就是小括號中表達式的返回值。所以,當我們用一對小括號把匿名函數括起來的時候,實際上小括號返回的,就是一個匿名函數的Function對象。查看全部
-
jQuery 整體架構查看全部
-
全局變量是魔鬼, 匿名函數可以有效的保證在頁面上寫入JavaScript,而不會造成全局變量的污染,通過小括號,讓其加載的時候立即初始化,這樣就形成了一個單例模式的效果從而只會執行一次。查看全部
-
觀察者模式 (pub/sub) 的背后,總的想法是在應用程序中增強松耦合性。并非是在其它對象的方法上的單個對象調用。一個對象作為特定任務或是另一對象的活動的觀察者,并且在這個任務或活動發生時,通知觀察者。觀察者也被叫作訂閱者(Subscriber),它指向被觀察的對象,既被觀察者(Publisher 或 subject)。當事件發生時,被觀察者(Publisher)就會通知觀察者(subscriber)。查看全部
-
我們換成jQuery提供的方式: var callbacks = $.Callbacks(); callbacks.add(function() { alert('a'); }) callbacks.add(function() { alert('b'); }) callbacks.fire(); //輸出結果: 'a' 'b' 是不是便捷很多了,代碼又很清晰,所以Callbacks它是一個多用途的回調函數列表對象,提供了一種強大的方法來管理回調函數隊列。 那么我們使用回調函數,總的來說弱化耦合,讓調用者與被調用者分開,調用者不關心誰是被調用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件的被調用函數。查看全部
-
例如一: 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 ) { //處理的代碼 }); 可以看出上面代碼方法,針對相同的功能,節約了大量的代碼空間。查看全部
-
jQuery.each靜態方法: 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; } } } 實現原理幾乎一致,只是增加了對于參數的判斷。對象用for in遍歷,數組用for遍歷。 jQuery可以是多個合集數組DOM,所以在處理的時候經常就針對每一個DOM都要單獨處理,所以一般都需要調用this.each 方法,如下代碼: dequeue: function( type ) { return this.each(function() { jQuery.dequeue( this, type ); }); }, 迭代器除了單純的遍歷,在jQuery內部的運用最多的就是接口的抽象合并,相同功能的代碼功能合并處理:查看全部
舉報
0/150
提交
取消