-
設(shè)計(jì)該模式背后的主要動力是促進(jìn)形成松散耦合。在這種模式中,并不是一個對象調(diào)用另一個對象的方法,而是一個對象訂閱另一個對象的特定活動并在狀態(tài)改變后獲得通知。訂閱者也稱為觀察者,而被觀察的對象稱為發(fā)布者或主題。當(dāng)發(fā)生了一個重要的事件時,發(fā)布者將會通知(調(diào)用)所有訂閱者并且可能經(jīng)常以事件對象的形式傳遞消息。查看全部
-
老師應(yīng)該漏了方法,正常的得這樣吧 var $$ = ajQuery = function(selector) { //把原型上的init作為構(gòu)造器 return new ajQuery.fn.init( selector ); } ajQuery.fn = ajQuery.prototype = { name: 'aaron', init: function() { console.log(this) }, constructor: ajQuery } //下邊代碼不能少吧 ajQuery.prototype.init.prototype = ajQuery.prototype;查看全部
-
eq()的實(shí)現(xiàn)原理就是在上面代碼中的把eq方法內(nèi)部轉(zhuǎn)成jQuery對象: eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );查看全部
-
get方法--是通過檢索匹配jQuery對象得到對應(yīng)的DOM元素,如下代碼實(shí)現(xiàn): get: function(num) { return num != null ? // Return just the one element from the set (num < 0 ? this[num + this.length] : this[num]) : // Return all the elements in a clean array slice.call(this); }查看全部
-
eq返回的是一個jQuery對象,get返回的是一個DOM對象。查看全部
-
end方法就是回溯到上一個Dom合集,因此對于鏈?zhǔn)讲僮髋c優(yōu)化,這個方法還是很有意義的。 源碼實(shí)現(xiàn) 既然是回溯到上一個DOM合集,那么肯定end方法中返回的就是一個jQuery對象了,所以我們看源碼其實(shí)就是返回prevObject對象了,如下代碼: end: function() { return this.prevObject || this.constructor(null); }查看全部
-
通過new操作符構(gòu)建一個對象,一般經(jīng)過四步: A.創(chuàng)建一個新對象 B.將構(gòu)造函數(shù)的作用域賦給新對象(所以this就指向了這個新對象) C.執(zhí)行構(gòu)造函數(shù)中的代碼 D.返回這個新對象查看全部
-
實(shí)例方法的實(shí)現(xiàn) 簡單一句話 ajQuery.fn.init.prototype = ajQuery.fn 基于var ajQuery = function(selector) { return new ajQuery.fn.init(selector); }查看全部
-
通過new操作符構(gòu)建一個對象,一般經(jīng)過四步: A.創(chuàng)建一個新對象 B.將構(gòu)造函數(shù)的作用域賦給新對象(所以this就指向了這個新對象) C.執(zhí)行構(gòu)造函數(shù)中的代碼 D.返回這個新對象 ajQuery.fn.init.prototype = ajQuery.fn;查看全部
-
首先我們看jQuery的入口都是統(tǒng)一的$, 通過傳遞參數(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) 9種用法整體來說可以分三大塊:選擇器、dom的處理、dom加載。 換句話說jQuery就是為了獲取DOM、操作DOM而存在的!所以為了更方便這些操作,讓節(jié)點(diǎn)與實(shí)例對象通過一個橋梁給關(guān)聯(lián)起來,jQuery內(nèi)部就采用了一種叫“類數(shù)組對象”的方式作為存儲結(jié)構(gòu),所以我們即可以像對象一樣處理jQuery操作,也能像數(shù)組一樣可以使用push、pop、shift、unshift、sort、each、map等類數(shù)組的方法操作jQuery對象了。查看全部
-
jQuery一共13個模塊,從2.1版開始jQuery支持通過AMD模塊劃分,jQuery在最開始發(fā)布的1.0版本是很簡單的,只有CSS選擇符、事件處理和AJAX交互3大塊。其發(fā)展過程中,有幾次重要的變革: ? 1.2.3 版發(fā)布,引入數(shù)據(jù)緩存,解決循環(huán)引用與大數(shù)據(jù)保存的問題 ? 1.3 版發(fā)布,它使用了全新的選擇符引擎Sizzle,在各個瀏覽器下全面超越其他同類型JavaScript框架的查詢速度,程序庫的性能也因此有了極大提升 ? 1.5 版發(fā)布,新增延緩對像(Deferred Objects),并用deferred重寫了Ajax模塊 ? 1.7 版發(fā)布,抽象出回調(diào)對象,提供了強(qiáng)大的的方式來管理回調(diào)函數(shù)列表。 每一次大的改進(jìn)都引入了一些新的機(jī)制、新的特性,通過這些新的機(jī)制就造就了如今jQuery庫,一共13個模塊,模塊不是單一的,比如jQuery動畫,都會依賴異步隊(duì)列、動畫隊(duì)列、回調(diào)隊(duì)列與數(shù)據(jù)緩存模塊等。 jQuery抽出了所有可復(fù)用的特性,分離出單一模塊,通過組合的用法,不管在設(shè)計(jì)思路與實(shí)現(xiàn)手法上jQuery都是非常高明的。查看全部
-
9種用法整體來說可以分三大塊:選擇器、dom的處理、dom加載。 換句話說jQuery就是為了獲取DOM、操作DOM而存在的!查看全部
-
基礎(chǔ)運(yùn)用, js, api, 數(shù)據(jù)結(jié)構(gòu), 觀察者模式查看全部
-
$.noConflict()把$的控制權(quán)交給其他庫查看全部
-
jQuery多庫共存處理 多庫共存換句話說可以叫無沖突處理。 總的來說會有2種情況會遇到: 1、$太火熱,jQuery采用$作為命名空間,不免會與別的庫框架或者插件相沖突。 2、jQuery版本更新太快,插件跟不上,導(dǎo)致不同版本對插件的支持度不一樣。 出于以上的原因,jQuery給出了解決方案–– noConflict函數(shù)。 引入jQuery運(yùn)行這個noConflict函數(shù)將變量$的控制權(quán)讓給第一個實(shí)現(xiàn)它的那個庫,確保jQuery不會與其他庫的$對象發(fā)生沖突。 在運(yùn)行這個函數(shù)后,就只能使用jQuery變量訪問jQuery對象。例如,在要用到$("aaron")的地方,就必須換成jQuery("aaron"),因?yàn)?的控制權(quán)已經(jīng)讓出去了。查看全部
舉報
0/150
提交
取消