- 
            
            理解观察者模式:发布订阅(Publish/Subscribe) 观察者的使用场合就是:当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。 JS里对观察者模式的实现是通过回调来实现的,作为 $.Callbacks() 的创建组件的一个演示,只使用回调函数列表,就可以实现 Pub/Sub 系统,将 $.Callbacks 作为一个队列。 查看全部
- 
            
            使用回调函数,总的来说弱化耦合,让调用者与被调用者分开。 调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件的被调用函数 查看全部
- 
            
            函数本质:简单的理解函数本质上就是输入和输出之间实现过程的映射 理解JS中的函数: 1、能“存储”在变量中 2、能作为函数的实参被传递 3、能在函数中被创建 4、能从函数中返回 理解JS中的回调函数: 1、使用回调函数方便异步处理,例如AJAX 2、要求执行某些操作后执行回调函数 查看全部
- 
            
            $.each()函数和$(selector).each()是不一样的,后者是专门用来遍历一个jQuery对象的,是为jQuery内部服务的。 $.each()函数可用于迭代任何集合,无论是“名/值”对象(JavaScript对象)或数组。 jQuery的实例方法最终也是调用的静态方法。 查看全部
- 
            
            迭代器设计:迭代器是一个框架的重要设计。我们经常需要提供一种方法顺序用来处理聚合对象中各个元素,而又不暴露该对象的内部,这也是设计模式中的迭代器模式(Iterator) 查看全部
- 
            
            通过eq方法只能产生一个新的对象,但是如果需要的是一个合集对象要怎么处理: 使用.slice( start [, end ] ) 查看全部
- 
            
            get与eq的区别: eq返回的是一个jQuery对象,get返回的是一个DOM对象 查看全部
- 
            
            end与addBack的链式属性: 新jQuery对象添加prevObject属性,我们看到prevObject其实还是当前jQuery的一个引用罢了,所以也就是为什么通过prevObject能取到上一个合集的原因了 查看全部
- 
            
            回溯处理的设计: 1、.end():可以回溯到之前的Dom元素集合,prevObject 2、.addBack():调用它会在栈中回溯一个位置,然后把两个位置上的元素集组合起来,并把这个新的、组合之后的元素集推入栈的上方。 利用这个DOM元素栈可以减少重复的查询和遍历的操作,而减少重复操作也正是优化jQuery代码性能的关键所在。 查看全部
- 
            
            插件接口的设计:接口自定义扩展 jQuery.extend({ data:function(){}, removeData:function(){} }) jQuery.fn.extend({ data:function(){}, removeData:function(){} })查看全部
- 
            
            jQuery.extend( object ) 表示将object合并至jQuery上 jQuery.extend( target, object1, object2) 表示将object1, object2合并至target上 这也是target如下设置的原因 var target = arguments[0] || {}, i = 1, length = arguments.length; //只有一个参数,就是对jQuery自身的扩展处理 if (i === length) { target = this; //调用的上下文对象jQuery/或者实例 i--; }查看全部
- 
            
            jQuery的Internal DSL形式带来的好处 1、编写代码时,让代码更贴近作者的思维模式; 2、阅读代码时,让读者更容易理解代码的含义; 3、应用DSL可以有效的提高系统的可维护性(缩小了实现模型和领域模型的距离,提高了实现的可读性)和灵活性,并且提供开发的效率 jQuery的这种管道风格的DSL链式代码,总的来说: 1、节约JS代码; 2、所返回的都是同一个对象,可以提高代码的效率。 通过简单扩展原型方法并通过return this的形式来实现跨浏览器的链式调用。 但是这种方法有一个问题是:所有对象的方法返回的都是对象本身,也就是说没有返回值,所以这种方法不一定在任何环境下都适合 查看全部
- 
            
            DSL是指Domain Specific Language,也就是用于描述和解决特定领域问题的语言 DSL分为内部DSL和外部DSL。 jQuery属于内部DSL。外部DSL需要编写解析器。 查看全部
- 
            
            静态与实例方法共享设计:实例方法取于静态方法 function jQuery() {...} jQuery.each = function(){...} jQuery.prototype = { each: function( callback, args ) { return jQuery.each( this, callback, args ); } }查看全部
- 
            
            jQuery分离构造器 - 不使用new 构造对象 - 为了避免死循环,将jQuery原型上的init方法作为构造函数,init中的this完全引用不到jQuery的原型,所以这里通过new把init方法与ajQuery给分离成2个独立的构造器 - 为什么init一定要放在jQuery原型上,单独写不好吗? 查看全部
举报
 
             
        