-
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。这就是为啥静态方法不覆盖而实例方法覆盖的原因了查看全部
举报