-
重點(diǎn)理解這門(mén)課的運(yùn)用 設(shè)計(jì)該模式背后的主要?jiǎng)恿κ谴龠M(jìn)形成松散耦合。在這種模式中,并不是一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象的方法,而是一個(gè)對(duì)象訂閱另一個(gè)對(duì)象的特定活動(dòng)并在狀態(tài)改變后獲得通知。訂閱者也稱(chēng)為觀察者,而被觀察的對(duì)象稱(chēng)為發(fā)布者或主題。當(dāng)發(fā)生了一個(gè)重要的事件時(shí),發(fā)布者將會(huì)通知(調(diào)用)所有訂閱者并且可能經(jīng)常以事件對(duì)象的形式傳遞消息。查看全部
-
unique與memory使用查看全部
-
觀察者與訂閱者的應(yīng)用。用于程序之間的解耦查看全部
-
eq() 方法取出來(lái)的是 jQuery對(duì)象,而get()取出來(lái)的是DOM對(duì)象。 num < 0 ? this[num + this.length] : this[num] 從末尾開(kāi)始取值查看全部
-
jQuery引入一個(gè)簡(jiǎn)單的內(nèi)部尋址的機(jī)制,可以回溯到之前的Dom元素集合,通過(guò)end()方法可以實(shí)現(xiàn): aaron.find('li').click(function() { alert(1); }).end().click(function() { alert(2); })查看全部
-
在$()時(shí),并沒(méi)使用jQuery構(gòu)造,而僅調(diào)用了jQuery函數(shù),在jQuery函數(shù)內(nèi)部通過(guò)new構(gòu)造了init函數(shù)的實(shí)例(js中每一個(gè)函數(shù)都有一個(gè)原型prototype),那返回的新對(duì)象都是init構(gòu)造的實(shí)例,它們都可訪問(wèn)init.prototype,而jQuery所有的方法都寫(xiě)在jQuery的jQuery.prototype上,要使實(shí)例能訪問(wèn)到j(luò)Query上的方法,用繼承或復(fù)制的方式將jQuery.prototype對(duì)象上的方法掛載到init.prototype上即可(因init.prototype一個(gè)方法也沒(méi)寫(xiě),所以可直接jQuery.prototype賦給init.prototype)查看全部
-
回溯處理的設(shè)計(jì): aaron.find('li').click(function() { alert(1); }).end().click(function() { alert(2); }) jQuery為我們操作這個(gè)內(nèi)部對(duì)象棧提供個(gè)非常有用的2個(gè)方法 .end() .addBack() 這里需要指出來(lái)可能有些API上是andSelf,因?yàn)榫蚎uery的api是這樣寫(xiě)的,andSelf現(xiàn)在是.addBack()的一個(gè)別名。在jQuery1.8和更高版本中應(yīng)使用.addBack()查看全部
-
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ì)象,jQuery.fn 和jQuery.prototype指向同一對(duì)象,擴(kuò)展fn就是擴(kuò)展jQuery.prototype原型對(duì)象。這里增加的是原型方法,也就是對(duì)象方法了。所以jQuery的API中提供了以上2個(gè)擴(kuò)展函數(shù)。查看全部
-
DSL是指Domain Specific Language,也就是用于描述和解決特定領(lǐng)域問(wèn)題的語(yǔ)言。 jQuery的Internal DSL形式帶來(lái)的好處——編寫(xiě)代碼時(shí),讓代碼更貼近作者的思維模式;閱讀代碼時(shí),讓讀者更容易理解代碼的含義;應(yīng)用DSL可以有效的提高系統(tǒng)的可維護(hù)性(縮小了實(shí)現(xiàn)模型和領(lǐng)域模型的距離,提高了實(shí)現(xiàn)的可讀性)和靈活性,并且提供開(kāi)發(fā)的效率。 jQuery的這種管道風(fēng)格的DSL鏈?zhǔn)酱a,總的來(lái)說(shuō): 節(jié)約JS代碼; 所返回的都是同一個(gè)對(duì)象,可以提高代碼的效率。 通過(guò)簡(jiǎn)單擴(kuò)展原型方法并通過(guò)return this的形式來(lái)實(shí)現(xiàn)跨瀏覽器的鏈?zhǔn)秸{(diào)用。利用JS下的簡(jiǎn)單工廠方法模式,來(lái)將所有對(duì)于同一個(gè)DOM對(duì)象的操作指定同一個(gè)實(shí)例。查看全部
-
首先,要解決無(wú)new,拿么只能在函數(shù)里邊new,但是new自己容易出現(xiàn)無(wú)限遞歸自己。那么就要想辦法,不能new 自己,那能不能new別人,然后讓這個(gè)人擁有和自己一樣的屬性和方法,只是換了個(gè)名字而已,當(dāng)然是可以的。如是就有了new ajQuery.fn.init( selector ). 在init()方法里返回this,然后將init.prototype=ajQuery.prototype,這樣,init()返回的this 就擁有了ajQuery所有的屬性和方法。繞了一個(gè)圈,目的就為了不new自己也能得到和自己擁有相同屬性和方法的實(shí)例對(duì)象。 理解:1.$(),jQuery()是執(zhí)行一個(gè)函數(shù),$和jQuery是函數(shù)名稱(chēng),這個(gè)函數(shù)返回的是一個(gè)對(duì)象,所以里面是一個(gè)new表達(dá)式,但是名字不能是自己,否則無(wú)限循環(huán)。2.既然不是自己,其實(shí)可以理解為jQuery()返回的不是jQuery對(duì)象,而是jQuery.fn.init(一個(gè)名字而已)對(duì)象。3.但是為了統(tǒng)一和方法/屬性的共用(理解原型鏈),jQUuery這樣處理,jQuery.fn.init.prototype = jQuery.prototype. <script type="text/javascript"> //常見(jiàn)寫(xiě)法 var $$ = ajQuery = function(selector) { this.selector = selector; return this } ajQuery.fn = ajQuery.prototype = { selectorName:function(){ return this.selector; }, constructor: ajQuery } var a = new $$('aaa'); //實(shí)例化 //得到選擇器名字 //aaa $("#test").html( a.selectorName() ) </script> 通過(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ì)象 最后一點(diǎn)就說(shuō)明了,我們只要返回一個(gè)新對(duì)象即可查看全部
-
JavaScript,JScript,ActionScript等腳本語(yǔ)言都是基于ECMAScript標(biāo)準(zhǔn)實(shí)現(xiàn)的,由于ECMAScript中是沒(méi)有類(lèi)的概念,因此JS不能像C++或Java等面向?qū)ο笳Z(yǔ)言以"class"關(guān)鍵字聲明和定義類(lèi),但JS巧妙地以匿名函數(shù)的方式聲明"類(lèi)",如: function ajQuery() { this.name = 'jQuery'; this.sayName = function(){ return this.name } var a = new ajQuery() prototype是構(gòu)造函數(shù)的一個(gè)屬性, 該屬性指向一個(gè)對(duì)象。而這個(gè)對(duì)象將作為該構(gòu)造函數(shù)所創(chuàng)建的所有實(shí)例的基引用(base reference), 可以把對(duì)象的基引用想像成一個(gè)自動(dòng)創(chuàng)建的隱藏屬性。 當(dāng)訪問(wèn)對(duì)象的一個(gè)屬性時(shí), 首先查找對(duì)象本身, 找到則返回;若不, 則查找基引用指向的對(duì)象的屬性(如果還找不到實(shí)際上還會(huì)沿著原型鏈向上查找, 直至到根)。 只要沒(méi)有被覆蓋的話, 對(duì)象原型的屬性就能在所有的實(shí)例中找到。查看全部
-
首先在<head></head>中加入腳本,比如說(shuō)是prototype.js和jquery.js 1.在導(dǎo)入jquery.js的時(shí)候,將prototype.js中的$進(jìn)行保存,var _$ = window.$; 2.jquery完全導(dǎo)入之后,此時(shí)的window.$已經(jīng)被替換為jquery中的$ 3.當(dāng)執(zhí)行noConflict函數(shù),此時(shí)的window.$ === jQuery 成立,進(jìn)而window.$被替換成之前保存的_$,即為prototype中的$ 4.此時(shí)即完成了jQuery讓出$控制權(quán)的功能查看全部
-
DOM文檔加載的步驟: 要想理解為什么ready先執(zhí)行,load后執(zhí)行就要先了解下DOM文檔加載的步驟: (1) 解析HTML結(jié)構(gòu)。 (2) 加載外部腳本和樣式表文件。 (3) 解析并執(zhí)行腳本代碼。 (4) 構(gòu)造HTML DOM模型。//ready (5) 加載圖片等外部文件。 (6) 頁(yè)面加載完畢。//load 從上面的描述中大家應(yīng)該已經(jīng)理解了吧,ready在第(4)步完成之后就執(zhí)行了,但是load要在第(6)步完成之后才執(zhí)行。查看全部
-
jQuery通過(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)查看全部
-
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ì)象。因此,小括號(hào)對(duì)加上匿名函數(shù)就如同有名字的函數(shù)般被我們?nèi)〉盟囊梦恢昧?。所以如果在這個(gè)引用變量后面再加上參數(shù)列表,就會(huì)實(shí)現(xiàn)普通函數(shù)的調(diào)用形式。 匿名函數(shù)可以有效的保證在頁(yè)面上寫(xiě)入JavaScript,而不會(huì)造成全局變量的污染,通過(guò)小括號(hào),讓其加載的時(shí)候立即初始化,這樣就形成了一個(gè)單例模式的效果從而只會(huì)執(zhí)行一次。查看全部
舉報(bào)
0/150
提交
取消