为了账号安全,请及时绑定邮箱和手机立即绑定
  • 2. 单一职责SRP”
    查看全部
    0 采集 收起 来源:jQuery整体架构

    2020-10-22

  • 知识点: 1.S.O.L.I.D五大原则 2.
    查看全部
    0 采集 收起 来源:jQuery整体架构

    2020-10-22

  • 知识点: 1. 从2.1版开始jQuery支持通过AMD模块划分 2.
    查看全部
    0 采集 收起 来源:jQuery整体架构

    2020-10-22

  • //简单模拟(闭包)

      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 )


    参数描述
    callbacksFunction,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: ƒ, …}


    查看全部
    0 采集 收起 来源:memory的设计

    2020-05-02

  • 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等方法。

    查看全部
    0 采集 收起 来源:$.Deferred的设计

    2020-05-02

  • 摘过来一句话: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。这就是为啥静态方法不覆盖而实例方法覆盖的原因了

    查看全部
    0 采集 收起 来源:静态接口设计

    2020-04-30

举报

0/150
提交
取消
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!