1.0古董版,github上木有的

开启流水账模式

  • window.undefined = window.undefined;


当年,window下还没有undefined方法,通过不存在的属性获取undefined是可靠地,但你需要保证他的确不存在
void 0;也是不错的选择

  • jquery对象的创建

Jquery() 那时还是个逗比,跟原型无关,他只是一个单纯地函数,主要用户方法的回调,和jq对象的产生,在产生jquery对象时,会对获取的数据进行多次数据验证

各种花式判断,可是js中多态的正确使用姿势

  • 入口兼容处理

jquery拒绝污染原生js,所有的一切由入口$开始进行,但是$可是香饽饽

  • dom操作

由此开始,就这么开始进行封装了,api考虑的无非就是易用,友好,稳定,高效这些万能的词汇

获取
size()  
get(index)  获取dom
index(dom)  获取索引

操作--属性
attr(key,value) 无视第三参数,内部用的
快捷属性css
css(key,value)

操作--外部
wrap()   包裹
before()
after()

操作--文本
text()
append()
prepend()

链式操作--维护
end
add
clone
pushStack

链式操作--遍历
find    后代查询,后代的个数不可预测,可能会越来越多的
each     节点遍历foreach
filter  自身过滤
not  剔除
is 判断

jquery是一个一个类库,一个面向对象工具库他由维护对象容器发放依赖对象,交给不依赖任何属性的工具方法,这里才是真正的实现,对象中的存在可以立即为代理

domManip函数

对节点添加划分出了一个domMainip函数,这个函数需要一个fn参数,有点像c#中的委托,不管怎样,的确是一个非常有意思的方式,这就是js中的高阶函数,需要一个fn参数或返回一个fn就是高阶函数

链式操作--记录历史状态

在jquery进行查询的时候,返回this,可以达到简单的链式功能,但链式操作也是非常有意思的规范的,至少你需要可以返回上一个节点,至此,单纯返回this已经不能满足链式操作规范,如果让你来实现这种规范,你会使用Stack吗?

  •  jquery继承

继承有N多种形式,这种应该算最流行的了,人人都可以通过这种方式给jquery进行增强和打补丁

  • 静态方法

静态方法是大多类库甚至库的实现集合,可以发现,很多方法在es5中可以直接使用,他们之间的原由和八卦,who cares

  • 浏览器处理

  • 初始化参数

回头需要了解init中的实现

  • 其他

注入补丁,ready在内的其他函数

其中ready:判断dom是否加载完成,否则加入初始化list中,看来又是一个while(true)型的监控

  • ready回掉

这个是常量,可不是实例,ready再次的逻辑还算简单,将fn交给一个list(类似于方法的执行),而后会有事件触发ready,js在第一次执行后,就进入到事件模式,在下面的代码中,肯定会对事件注册ready方法,换句话说,$(fn) 中的方法,被卖了好几道

  • 事件补丁

这也是一种自执行的方式,$.extend是一种先处理配置信息,在一次进行注入的补丁方式,而自执行是一种可以混合的脚本模式,关于自执行添加补丁最大的好处在于动态获取/创建key,

jQuery.fn[o]这在配置文件中是无法存在的

随后又是2种补丁,继续无视

而后是爽爽的xhr

为什么越到后面就越来越不想看了呢....

 

posted on 2015-03-23 14:27  Glimis  阅读(215)  评论(0编辑  收藏  举报