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

為了賬號安全,請及時綁定郵箱和手機立即綁定
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()
恭喜你,通過了本次課程 返回課程
覺得老師對memory的解釋有些歧義,看完了這節(jié)課,我覺得 本例中的memory變量是保存了當前的fire函數(shù)的參數(shù),每次添加一個新的觀察者函數(shù),就用當前的memory變量作為參數(shù)調(diào)用這個添加的觀察者函數(shù)一次。
memory = options === 'memory' && data; 我一直以為memory的最終結(jié)果為true或者false,現(xiàn)在我才發(fā)現(xiàn)原來我沒有弄明白 與 的真諦! 假如 options === ‘memory’ 的話,memory = data。 其余情況 memory = false
隨著后面課程的學(xué)習(xí),發(fā)現(xiàn)jQuery的實現(xiàn)方式跟我想的不一樣啊,我的實現(xiàn)思路就是實現(xiàn)一個被觀察者池,為每一個被觀察者命名;而jQuery則是在函數(shù)內(nèi)部定義一個觀察者數(shù)組,然后使用閉包的方式返回一個對象;如果用我的方法的話,還得額外檢測名字是否重復(fù)。問世間是否有山比此山更高,一山還比一山高啊
隨著我們的使用,optionsCache會存入所有的可能的參數(shù)組合。
今天又看了一遍,發(fā)現(xiàn)以前對這節(jié)課的理解是錯的!! 第19行, arguments.callee 指的是setTimeout內(nèi)的函數(shù),指的不是Aaron ??! 大家可以添加一句console.log(arguments.callee)試試。
另外我一直思考,為啥要用setTimeout函數(shù),百度得到了這個答案:settimeout的作用機制其實是把函數(shù)加入到全局(window)的空間里的任務(wù)隊列
貌似1.8版本之后,load就拋棄了·····只剩下ajax的load了
@javaeye 觀察不仔細?。? 明明是 callee 不是 call!
callee返回正在執(zhí)行的函數(shù)本身的引用,它是arguments的一個屬性!
@小姜姜姜姜 'arguments.callee(List) 這句話可以換成 Aaron(List,callback) 這樣的話就需要每次執(zhí)行25毫秒'
建議不要換,因為如果換了的話,以后我們需要對函數(shù)重命名的話,那我們就得改兩處。
很精妙!self 存在外部引用 + 閉包
課程須知
源碼的閱讀不是一蹴而就的,需要大家有一定的功底,比如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
提交
取消