Jquery源码解析(jQuery的遍历结构设计)

来源:互联网 发布:linux 复制所有内容 编辑:程序博客网 时间:2024/06/05 16:10

遍历的接口我们可以归为几大类:

1 祖先
2 同胞兄弟
3 后代
4 过滤
遍历的接口很多都是具有相似或者说是一类的处理功能,那么这种接口的设计我们不能就事论事的一个一个去实现,这样代码就会显得非常累赘也不容易维护,那么就这么几大类Query分了好几十API出来,丰富的接口可以让高层的设计更为简单。但是框架内部的却要简练。那么针对这种类似功能的接口,jQuery内部就会做更多的抽象处理了。

1.针对层级关系的处理,jQuery就抽出了一个dir的方法,用于根据传递的元素与词素的位置关系,查找指定的元素。

parent,parents,parentsUntil等方法如代码所示:

function dir(elem, dir, until) {    //参考右边代码     return matched;}

2.我们在上半部的第一章中就提到过迭代器,迭代器是一个框架的重要设计。

我们经常需要提供一种方法顺序的用来处理聚合对象中各个元素,而又不暴露该对象的内部,这也是设计模式中的迭代器模式。

迭代器除了单纯的遍历,在jQuery内部的运用最多的就是接口的抽象合并,相同功能的代码功能合并处理:

jQuery.each({     parent: function(elem) {},    parents: function(elem) {},     nextAll: function(elem) {},     prevAll: function(elem) {},     ................}, function(name, fn) {     api[name] = function(until, selector){      //代码右图  };});

可以看出上面代码方法,针对相同的功能,节约了大量的代码空间。