-
2. 單一職責(zé)SRP”查看全部
-
知識(shí)點(diǎn): 1.S.O.L.I.D五大原則 2.查看全部
-
知識(shí)點(diǎn): 1. 從2.1版開始jQuery支持通過AMD模塊劃分 2.查看全部
-
//簡單模擬(閉包)
? function aDeferred() {
? ? var arr = [];
? ? return {
? ? ? then: function(fn) {
? ? ? ? arr.push(fn)
? ? ? ? return this;
? ? ? },
? ? ? resolve: function(args) {
? ? ? ? var returned;
? ? ? ? arr.forEach(function(fn, i) {
? ? ? ? ? var o = returned || args;
? ? ? ? ? returned = fn(o)
? ? ? ? })
? ? ? }
? ? }
? }
查看全部 -
element.querySelectorAll?在文檔內(nèi)找全部符合選擇器描述的節(jié)點(diǎn)包括Element本身
問題出在aaRoot.querySelector盡然還有返回值!因?yàn)樯舷挛牟檎业姆秶俗陨砹?/p>
查看全部 -
簡單來說,就是IE8之前的版本,需使用getAttribute('className')才能獲得class屬性的值,F(xiàn)F及IE8之后的版本則是W3C的標(biāo)準(zhǔn)getAttribute('class')。
這是因?yàn)镮E 混淆了 DOM 對象屬性(property)及 HTML 標(biāo)簽屬性(attribute),造成了對 setAttribute、getAttribute 的不正確實(shí)現(xiàn)。
查看全部 -
$.Deferred的resolveWith( context [, args]).如:var dtd=$.Deferred(); function car(age,name){this.age=age;this.name=name}; dtd.done(car); var obj={}; dtd.resolveWith(obj,[8,"jeep"]);console.log(obj.age+","+obj.name)
callbacks.add( callbacks )
參數(shù) 描述 callbacks Function,Array類型 一個(gè)函數(shù)或者一個(gè)函數(shù)數(shù)組,用來添加到回調(diào)列表 查看全部 -
var cbs = $.Callbacks('once memory');
cbs.add(fn1);
console.log('..........')
cbs.add(fn2);
cbs.fire('bar');
VM9160:5 ..........
VM9100:7 fn1 says bar
VM9100:10 fn2 says bar
{add: ?, remove: ?, has: ?, empty: ?, disable: ?, …}
cbs.fire('foo');
{add: ?, remove: ?, has: ?, empty: ?, disable: ?, …}
查看全部 -
var?dfd=$.Deferred(); dfd.progress(function(data){ ????alert(data); }).done(function(data){ ????alert("done:>>>>>"+data); }).fail(function(data){ ????alert("fail:>>>>"+data); });function?getProcess(){ ????dfd.notify("我是progress回調(diào)函數(shù)的參數(shù)");????var?a=true;????//下面判斷是為了執(zhí)行done還是fail ????if(a){ ????????dfd.resolve("執(zhí)行done....."); ????}else{ ????????dfd.reject("執(zhí)行fail......"); ????} }
<input?type="button"?value="確定"?onclick="getProcess()"?/>
查看全部 -
重點(diǎn)
//內(nèi)部promise對象,作用:
? ? ? //1:通過promise.promise( deferred );混入到deferred中使用
? ? ? //2:可以生成一個(gè)受限的deferred對象,
? ? ? //? ?不在擁有resolve(With), reject(With), notify(With)這些能改變deferred對象狀態(tài)并且執(zhí)行callbacklist的方法了
? ? ? //? ?換句話只能讀,不能改變了
查看全部 -
實(shí)際上在Callback源碼fire方法有一句 memory = options.memory && data;這樣就很巧妙的緩存當(dāng)前參數(shù)5的值,提供給下一個(gè)使用,這個(gè)就是then,pipe鏈?zhǔn)綌?shù)據(jù)的一個(gè)基礎(chǔ)了,此刻的操作,我們把memory保存了這個(gè)數(shù)據(jù)的值。
重點(diǎn)來了,下一個(gè)defer.done的操作也是走的add的處理,把done的回調(diào)函數(shù)加入到list隊(duì)列中的之后,接著就會(huì)觸發(fā)。
查看全部 -
jQuery.extend({ ???Deferred:function(func){ ????????...省略代碼.... ????????return?deferred ???}, ???when:function(func){ ??????...省略代碼.... ??????return?deferred.promise(); ???} })
Deferred方法內(nèi)部建議了2個(gè)對象,一個(gè)是deferred外部接口對象,一個(gè)是內(nèi)部promise對象。
promise對象解釋是一個(gè)受限的對象, 這就是所謂的受限制的deferred對象,因?yàn)橄啾戎埃?返回的deferred不再擁有resolve(With), reject(With), notify(With)這些能改變deferred對象狀態(tài)并且執(zhí)行callbacklist的方法了,只能是then、done、fali等方法。
查看全部 -
摘過來一句話:deferred.promise()的作用是,在原來的deferred對象上返回另一個(gè)deferred對象,后者只開放與改變執(zhí)行狀態(tài)無關(guān)的方法(比如done()方法和fail()方法),屏蔽與改變執(zhí)行狀態(tài)有關(guān)的方法(比如resolve()方法和reject()方法),從而使得執(zhí)行狀態(tài)不能被改變。
查看全部 -
var body1 = $("body")
undefined
$.data(body1, "bar", '慕課網(wǎng)一');
"慕課網(wǎng)一"
$.data(body1, "bar");
"慕課網(wǎng)一"
$.data(body1, "bar", '慕課網(wǎng)一1');
"慕課網(wǎng)一1"
$.data(body1, "bar");
"慕課網(wǎng)一1"
$.data($("body"), "bar", '慕課網(wǎng)一1');
"慕課網(wǎng)一1"
$.data($("body"), "bar");
undefined
$.data是綁定在對象上
$().data是綁定在dom上
查看全部 -
靜態(tài)方法data的實(shí)現(xiàn)不像attr操作直接把數(shù)據(jù)作為屬性捆綁到元素節(jié)點(diǎn)上
globalCache” 包含了多個(gè) DOM Element 的 “cache”,并在 DOM Element 上添加一個(gè)屬性,存放 “cache” 對應(yīng)的 uid。
jQuery中每一個(gè)對象都是一個(gè)新的jQuery.fn.init()實(shí)例,所以即使兩個(gè)jQuery中包含的DOM元素相同,這兩個(gè)jQuery對象也并無關(guān)系。
好了,那么靜態(tài)方法就是給jQuery對象附加一個(gè)uid,而實(shí)例方法則就是給jQuery對象中的DOM節(jié)點(diǎn)上附加uid。這就是為啥靜態(tài)方法不覆蓋而實(shí)例方法覆蓋的原因了查看全部
舉報(bào)