第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
建議看完源碼再來看這一節(jié),要不會很頭疼的
通俗易懂的理解啊, 不錯 ?。?!引用一下 ??!理解:1.$(),jQuery()是執(zhí)行一個函數(shù),$和jQuery是函數(shù)名稱,這個函數(shù)返回的是一個對象,所以里面是一個new表達式,但是名字不能是自己,否則無限循環(huán)。2.既然不是自己,其實可以理解為jQuery()返回的不是jQuery對象,而是jQuery.fn.init(一個名字而已)對象。3.但是為了統(tǒng)一和方法/屬性的共用(理解原型鏈),jQUuery這樣處理,jQuery.fn.init.prototype = jQuery.prototype.
學(xué)到后面就沒人了,太浮躁
第三條真是看得云里霧里,隔了兩天再看現(xiàn)在仍是一臉懵逼
js中的同步: 后一個任務(wù)等待前一個任務(wù)結(jié)束,然后再執(zhí)行,程序的執(zhí)行順序與任務(wù)的排列順序是一致的、同步的。 異步:,每一個任務(wù)有一個或多個回調(diào)函數(shù)(callback),前一個任務(wù)結(jié)束后,不是執(zhí)行后一個任務(wù),而是執(zhí)行回調(diào)函數(shù),后一個任務(wù)則是不等前一個任務(wù)結(jié)束就執(zhí)行,所以程序的執(zhí)行順序與任務(wù)的排列順序是不一致的、異步的。
這兩個案例都實現(xiàn)了異步,但不同的是,案例一比較難看懂,而且代碼耦合度較高。 案例二則相對來說清晰很多。
先推薦看一看這篇博客:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
異步就是解決這種呆板,讓b進入阻塞狀態(tài),掛起b,繼續(xù)運行c 和 d,當a 產(chǎn)生了交互結(jié)果,再運行b。
同步的代碼段運行順序: a - b -c -d
異步的代碼段運行順序: a - c -d -b 或者 a - c -b -d
我的理解:所謂阻塞,就是b代碼段依賴于a代碼段的結(jié)果,假如a代碼段未返回結(jié)果,那么b代碼段就會一直等待。
我們知道js是單線程的,也就是說,同一時刻,只能運行一段代碼,假設(shè)我們自上而下有a b c d四個代碼段,a代碼運行時需要與服務(wù)器端交互,而b代碼則依賴于a的交互結(jié)果,當a運行完成后,自上而下就需要運行b代碼了,可是因為b需要a與服務(wù)器的交互結(jié)果,而與服務(wù)器進行交互相對來說又很慢,所以我們只能讓b阻塞,然后等待知道交互結(jié)果產(chǎn)生再運行b,然后運行c d??墒莄代碼和d代碼根本就不需要依賴于a的結(jié)果,我們阻塞了b的話,c 和 d 也一直在等待,這樣是不是有些太呆板了?異步就是解決這種呆板...
jQuery中每一個對象都是一個新的jQuery.fn.init()實例,所以即使兩個jQuery中包含的DOM元素相同,這兩個jQuery對象也并無關(guān)系。
好了,那么靜態(tài)方法就是給jQuery對象附加一個uid,而實例方法則就是給jQuery對象中的DOM節(jié)點上附加uid。這就是為啥靜態(tài)方法不覆蓋而實例方法覆蓋的原因了
看到這里,我思考了很久,終于搞懂了以前一直疑惑的地方。
直接看代碼:
代碼一:
var a1 = document.getElementById('#ha');
var a2 = document.getElemnetById('#ha');
console.log(a1 ==a2) // true
代碼二:
var a1 = $('#ha');
var a2 = $('#ha');
console.log(a1 == a2) // false
不同的結(jié)果,我以前一直以js的思想思考jQuery。jQuery中每一個對象都是一個新的 。。。。
接上: 比如說我們有一個緩存池的expando屬性的值為20161124.1825 ,在這個緩存池中 只有 一個名為 a 的DOM元素,那么就會為a附加一個屬性20161124.1825 ,也就是a.20161124.1825 = 1 (為什么不是0呢?看上面的代碼this.cache[0]是一個函數(shù),返回某個對象且不能修改)。
當我們要操作a的緩存對象時,我們需要找到a的20161124.1825 = 1屬性,根據(jù)這個屬性找到expando為20161124.1825的緩存池,然后找到緩存池中的cache[1],對其進行操作。
個人理解(可能有錯誤啊,請高手指點):Data()構(gòu)造函數(shù)本身所要構(gòu)造的就是緩存池對象,因為可能有多個緩存池,所以,為了給每個緩存池一個獨一無二的id,就用了這段代碼:this.expando = jQuery.expando + Math.random();每一個緩存池對象都有expando屬性,這個屬性保存了其自身的id,而且這個id值幾乎不可能與其他緩存池的expando屬性值相同。
然后每個緩存池可能有多個DOM元素映射對象,凡事從屬于這個緩存池的DOM元素都存在一個 與這個緩存池的expando屬性的值相同的屬性,這個屬性保存了自身的映射對象在緩存池中對應(yīng)的key。 字數(shù)限制另起評論
不知道我的理解對不對:
1 DOM元素
cache = {id1:{ },id2:{ }......}
DOM.cache_id = some_number // 數(shù)據(jù)類型是數(shù)字
當我們要操作DOM的緩存數(shù)據(jù)時,我們需要訪問他的cache_id屬性,這個屬性的值是數(shù)字類型,取到值以后,使用cache[some_number]就得到了該DOM的緩存數(shù)據(jù)對象。 DOM的cache_id屬性只是保存了映射關(guān)系,并沒有綁定額外的js對象。
2 js對象
緩存數(shù)據(jù)對象直接存儲在該js對象的某個屬性中。操作這個js對象的屬性就是操作這個js的緩存數(shù)據(jù)對象。
在開發(fā)中,我們可能會為DOM節(jié)點自定義添加很多屬性,如果給DOM元素添加自定義的屬性和過多的數(shù)據(jù)可能會引起內(nèi)存泄漏,所以要盡量避免這么干。(在js中內(nèi)存泄漏的大多情況都是由于DOM節(jié)點與js對象循環(huán)引用引起的) ,為了在給DOM附加額外屬性的同時不引起內(nèi)存泄漏,引入了數(shù)據(jù)緩存系統(tǒng)。
數(shù)據(jù)緩存接口有兩個:$.data() .data()
恭喜你,通過了本次課程 返回課程
課程須知
源碼的閱讀不是一蹴而就的,需要大家有一定的功底,比如jQuery的基礎(chǔ)運用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基礎(chǔ)功底,甚至還需要理解常見的設(shè)計模式、數(shù)據(jù)結(jié)構(gòu)等等。當然大家也不要被這些給嚇住了,理解,總是需要一種慢慢的學(xué)習(xí)過程。
老師告訴你能學(xué)到什么?
通過本課程的學(xué)習(xí),您可以由淺入深地剖析jQuery庫的設(shè)計與實現(xiàn)。 其中我們圍繞的重心: 1、設(shè)計理念 2、結(jié)構(gòu)組織 3、接口設(shè)計 4、模式運用 5、場景套用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消