-
2. 單一職責SRP”查看全部
-
知識點: 1.S.O.L.I.D五大原則 2.查看全部
-
知識點: 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?在文檔內找全部符合選擇器描述的節點包括Element本身
問題出在aaRoot.querySelector盡然還有返回值!因為上下文查找的范圍包含了自身了
查看全部 -
簡單來說,就是IE8之前的版本,需使用getAttribute('className')才能獲得class屬性的值,FF及IE8之后的版本則是W3C的標準getAttribute('class')。
這是因為IE 混淆了 DOM 對象屬性(property)及 HTML 標簽屬性(attribute),造成了對 setAttribute、getAttribute 的不正確實現。
查看全部 -
$.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 )
參數 描述 callbacks Function,Array類型 一個函數或者一個函數數組,用來添加到回調列表 查看全部 -
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回調函數的參數");????var?a=true;????//下面判斷是為了執行done還是fail ????if(a){ ????????dfd.resolve("執行done....."); ????}else{ ????????dfd.reject("執行fail......"); ????} }
<input?type="button"?value="確定"?onclick="getProcess()"?/>
查看全部 -
重點
//內部promise對象,作用:
? ? ? //1:通過promise.promise( deferred );混入到deferred中使用
? ? ? //2:可以生成一個受限的deferred對象,
? ? ? //? ?不在擁有resolve(With), reject(With), notify(With)這些能改變deferred對象狀態并且執行callbacklist的方法了
? ? ? //? ?換句話只能讀,不能改變了
查看全部 -
實際上在Callback源碼fire方法有一句 memory = options.memory && data;這樣就很巧妙的緩存當前參數5的值,提供給下一個使用,這個就是then,pipe鏈式數據的一個基礎了,此刻的操作,我們把memory保存了這個數據的值。
重點來了,下一個defer.done的操作也是走的add的處理,把done的回調函數加入到list隊列中的之后,接著就會觸發。
查看全部 -
jQuery.extend({ ???Deferred:function(func){ ????????...省略代碼.... ????????return?deferred ???}, ???when:function(func){ ??????...省略代碼.... ??????return?deferred.promise(); ???} })
Deferred方法內部建議了2個對象,一個是deferred外部接口對象,一個是內部promise對象。
promise對象解釋是一個受限的對象, 這就是所謂的受限制的deferred對象,因為相比之前, 返回的deferred不再擁有resolve(With), reject(With), notify(With)這些能改變deferred對象狀態并且執行callbacklist的方法了,只能是then、done、fali等方法。
查看全部 -
摘過來一句話:deferred.promise()的作用是,在原來的deferred對象上返回另一個deferred對象,后者只開放與改變執行狀態無關的方法(比如done()方法和fail()方法),屏蔽與改變執行狀態有關的方法(比如resolve()方法和reject()方法),從而使得執行狀態不能被改變。
查看全部 -
var body1 = $("body")
undefined
$.data(body1, "bar", '慕課網一');
"慕課網一"
$.data(body1, "bar");
"慕課網一"
$.data(body1, "bar", '慕課網一1');
"慕課網一1"
$.data(body1, "bar");
"慕課網一1"
$.data($("body"), "bar", '慕課網一1');
"慕課網一1"
$.data($("body"), "bar");
undefined
$.data是綁定在對象上
$().data是綁定在dom上
查看全部 -
靜態方法data的實現不像attr操作直接把數據作為屬性捆綁到元素節點上
globalCache” 包含了多個 DOM Element 的 “cache”,并在 DOM Element 上添加一個屬性,存放 “cache” 對應的 uid。
jQuery中每一個對象都是一個新的jQuery.fn.init()實例,所以即使兩個jQuery中包含的DOM元素相同,這兩個jQuery對象也并無關系。
好了,那么靜態方法就是給jQuery對象附加一個uid,而實例方法則就是給jQuery對象中的DOM節點上附加uid。這就是為啥靜態方法不覆蓋而實例方法覆蓋的原因了查看全部
舉報