看蒙了,最后找到老師的博客,一下看明白了http://www.cnblogs.com/aaronjs/p/3278578.html#undefined
2017-12-12
$.data(body1, 'age', '25');
$.data(body2, 'age', '28');
console.log($.data(body1, 'age'));//25
console.log($.data(body2, 'age'));//28
檢查了$.cache,并沒有“age”屬性,說明在靜態(tài)方法中并沒有將$("body")作為dom對(duì)象處理,只是按照普通對(duì)象的處理方式,附加在jQuery.expando屬性,側(cè)面反映了jquery的dom緩存機(jī)制
$.data(body2, 'age', '28');
console.log($.data(body1, 'age'));//25
console.log($.data(body2, 'age'));//28
檢查了$.cache,并沒有“age”屬性,說明在靜態(tài)方法中并沒有將$("body")作為dom對(duì)象處理,只是按照普通對(duì)象的處理方式,附加在jQuery.expando屬性,側(cè)面反映了jquery的dom緩存機(jī)制
2017-12-07
之前的評(píng)論說錯(cuò)了,汗。。。老師沒有舉例為什么靜態(tài)方法不會(huì)產(chǎn)生覆蓋。PS:靜態(tài)方法hasData并不能檢測(cè)到實(shí)例方法.data()附加的數(shù)據(jù)。
2017-12-07
“前面的第三小節(jié)留下了一個(gè)疑問:jQuery.data() 與 .data()為什么會(huì)有區(qū)別?”這句話所指區(qū)別在何處?jQuery.data() 與 .data()的值應(yīng)該都會(huì)被覆蓋掉吧。也許老師想說的是運(yùn)行$("#id").data("xx","yy");$("#id").data("xx","zz");“yy”并不會(huì)覆蓋“zz”,這是由于$.fn.init并不是單例模式的。
2017-12-07
看這種源碼并不是要求自己全部看懂它,而是讓自己能夠明白這種設(shè)計(jì)思想,學(xué)習(xí)一些高級(jí)寫法,在生產(chǎn)環(huán)境下代碼應(yīng)該怎么寫才規(guī)范
2017-11-29
deferred.promise()的作用是,在原來的deferred對(duì)象上返回另一個(gè)deferred對(duì)象,后者只開放與改變執(zhí)行狀態(tài)無關(guān)的方法(比如done()方法和fail()方法),屏蔽與改變執(zhí)行狀態(tài)有關(guān)的方法(比如resolve()方法和reject()方法),從而使得執(zhí)行狀態(tài)不能被改變。
意思是如果返回的是 return dtd,那么我想改變執(zhí)行狀態(tài),可以這么做dtd.reject(),這樣就改變了執(zhí)行方法,但是如果 return dtd.promise(),由于dtd.promise()沒有resolve,reject等方法,所以無法從外部改變執(zhí)行狀態(tài)。
意思是如果返回的是 return dtd,那么我想改變執(zhí)行狀態(tài),可以這么做dtd.reject(),這樣就改變了執(zhí)行方法,但是如果 return dtd.promise(),由于dtd.promise()沒有resolve,reject等方法,所以無法從外部改變執(zhí)行狀態(tài)。
2017-11-04
defer.promise(obj); 它的作用就是在wait對(duì)象上部署Deferred接口。正是因?yàn)橛辛诉@一行,后面才能直接在obj上面調(diào)用done()和fail()。
2017-11-04