为了账号安全,请及时绑定邮箱和手机立即绑定
  • mark
    查看全部
  • 观察者模式
    查看全部
  • 函数是第一类对象,这是javascript中的一个重要的概念。意味着函数可以像对象一样按照第一类管理被使用,所以在javaScript中的函数: ☑ 能“存储”在变量中 ☑ 能作为函数的实参被传递 ☑ 能在函数中被创建 ☑ 能从函数中返回
    查看全部
    0 采集 收起 来源:理解回调函数

    2016-01-31

  • 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:赵望野 链接:https://www.zhihu.com/question/20289071/answer/14745394 来源:知乎 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。二者的作用完全一样,只是接受参数的方式不太一样。例如,有一个函数 func1 定义如下:var func1 = function(arg1, arg2) {};就可以通过 func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,他可以任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
    查看全部
    0 采集 收起 来源:迭代器

    2016-01-31

  • 单一职责原则(SRP:Single responsibility principle)又称单一功能原则
    查看全部
    0 采集 收起 来源:迭代器

    2016-01-31

  • pushStack: 新建一个jQuery对象并将上一个对象的引用加到栈中
    查看全部
    0 采集 收起 来源:get与eq的区别

    2016-01-31

  • get与eq的区别 .eq() 减少匹配元素的集合,根据index索引值,精确指定索引对象。 .get() 通过检索匹配jQuery对象得到对应的DOM元素。 同样是返回元素,那么eq与get有什么区别呢? eq返回的是一个jQuery对象,get返回的是一个DOM对象。举个例子: $( "li" ).get( 0 ).css("color", "red"); //错误 $( "li" ).eq( 0 ).css("color", "red"); //正确 get方法本质上是把jQuery对象转换成DOM对象,但是css属于jQuery构造器的,DOM是不存在这个方法的,如果需要用jQuery的方法,我们必须这样写: var li = $( "li" ).get( 0 ); $( li ).css("color", "red"); //用$包装 取出DOM对象li,然后用$再次包装,使之转变成jQuery对象,才能调用css方法,这样要分2步写太麻烦了,所以jQuery给我们提供了一个便捷方法eq()。
    查看全部
    0 采集 收起 来源:get与eq的区别

    2018-03-22

  • addBack:调用它会在栈中回溯一个位置,然后把两个位置上的元素集组合起来,并把这个新的、组合之后的元素集推入栈的上方。
    查看全部
  • end方法可以回溯到之间的Dom元素集合
    查看全部
  • jQuery的这种管道风格的DSL链式代码,总的来说: ☑ 节约JS代码; ☑ 所返回的都是同一个对象,可以提高代码的效率。 通过简单扩展原型方法并通过return this的形式来实现跨浏览器的链式调用。利用JS下的简单工厂方法模式,来将所有对于同一个DOM对象的操作指定同一个实例。
    查看全部
  • 要想理解为什么ready先执行,load后执行就要先了解下DOM文档加载的步骤: (1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。//ready (5) 加载图片等外部文件。 (6) 页面加载完毕。//load 从上面的描述中大家应该已经理解了吧,ready在第(4)步完成之后就执行了,但是load要在第(6)步完成之后才执行。 结论: ready与load的区别就在于资源文件的加载,ready构建了基本的DOM结构,所以对于代码来说应该越快加载越好。在一个高速浏览的时代,没人愿意等待答案。假如一个网站页面加载超过4秒,不好意思,你1/4的用户将面临着流失,所以对于框架来说用户体验是至关重要的,我们应该越早处理DOM越好,我们不需要等到图片资源都加载后才去处理框架的加载,图片资源过多load事件就会迟迟不会触发。
    查看全部
  • u
    查看全部
  • 内存泄露两点: ☑ JS的内存泄露,无怪乎就是从DOM中remove了元素,但是依然有变量或者对象引用了该DOM对象。然后内存中无法删除。使得浏览器的内存占用居高不下。这种内存占用,随着浏览器的刷新,会自动释放。 ☑ 而另外一种情况,就是循环引用,一个DOM对象和JS对象之间互相引用,这样造成的情况更严重一些,即使刷新,内存也不会减少。这就是严格意义上说的内存泄露了。
    查看全部
    0 采集 收起 来源:内存泄露

    2016-01-29

  • DOM文档加载的步骤: (1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。//ready (5) 加载图片等外部文件。 (6) 页面加载完毕。//load
    查看全部
  • 般来说,javascript要实现异步的收集,就需要“等待”,比如defer.resolve(5)虽然触发了,但是done的处理还没添加,我们必须要等待done、then等方法先添加了后才能执行了resolve,那么常规的的用法就是在resolve内部用setTimeout 0,image.onerror行成一个异步的等待操作处理。 但是jQuery很巧妙的绕过了这个收集方式, defer.resolve(5)方法实际就是触发了callback回到函数的fireWith方法,这样可以接受一个上下文deferred与参数5 deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments); 之前 done | fail | progress方法都是通过jQuery.Callbacks("once memory") 或 jQuery.Callbacks("memory")生成的。 实际上在Callback源码fire方法有一句 memory = options.memory && data;这样就很巧妙的缓存当前参数5的值,提供给下一个使用,这个就是then,pipe链式数据的一个基础了,此刻的操作,我们把memory保存了这个数据的值。 重点来了,下一个defer.done的操作也是走的add的处理,把done的回调函数加入到list队列中的之后,接着就会触发。 // With memory, if we're not firing then // we should call right away } else if (memory) { firingStart = start; fire(memory); } 因为memory在上一个resolve操作的时候,缓存了5了,所以memory的判断显示是为真的,所以立刻就触发了fire(memory)的代码了,所以就算触发的循序与添加的循序不一致,也不会导致错误。 而且jquery很巧妙的避免了异步收集的问题,这样处理更可靠了。可见回调函数模块就是为Deferred模块量身定做的了。
    查看全部

举报

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

微信扫码,参与3人拼团

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

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