jquery1.0目的是简化对domcument的操作+ajax的简化,即jquery实例对象需要以来domcument对象(使用类数组方式进行管理),至此可以根据对jquery1.0的理解,反向提出的需求

jquery需求

jquery的实例致力于对domcument的简化操作,而对于jquery实例的创建,需要有以下几种方式
1.可查询domcument,并返回jquery实例进行管理
2.可创建domcument,并返回jquery实例进行管理

注:

调用jquery一定会获取jquery对象
因为依赖domcument,即需要domcument加载完后才可准确进行查询,需要一个简单回调方法,对jquery的实例创建,需要存在回调函数中

jquery实例设计

入口方法jquery进行简化($===jquery),并进行多态设计(工厂设计),对于获取参数argument[0](arg0),有以下判断
arg0-->string&&"创建语法"->生成domcument-->封装,返回jquery对象
arg0-->string&&"查询语法"->查询domcument-->封装,返回jquery对象
arg0-->string&&执行方法-->进行回调
arg0-->domcument-->直接封装
arg0->jquery实例-->直接返回

实现效果

源码实现

有需求,有设计,实现并不难,尤其是1.0版本,其中实现上多了一个参数,我是理解为需求变更(参考后续版本,可以明显感觉,这里的处理非常临时)

默认参数是个好习惯(也是套路),不bb

jquery产生的是实例,即使使用兼容写法(参数本身就是jquery时),也会返回copy对象(套路)

nodeType判断是否为Html节点的套路

最后加了个回调方法,jquery依赖于domcument创建,有个回调是个好习惯,现在没毛用

总之,作为入口方法的jquery即是不同的判断函数(工厂)又是构造函数

优化

一期的jquery构造函数实现已经完成,大致的需求肯定能够满足,至于兼容性(小逻辑)和性能嘛...反正跟我以前写的东西很像

在1.1中加强逻辑描述

1.2使用了闭包构造的方式进行jquery加载,应该属于模块的应用吧

1.3加入了Sizzle,添加selector, context 属性,此后参数也正是命名为selector, context

至此以后jquery构造函数的结构框架算是正式完成了,区别肯定是有的,整体结构就没有太大的变化

附:隐式创建对象

javascript使用关键字new + 构造函数进行对象的创建,如

创建对象需要new,是铁打的事实,但如果Alice的实例大量存在,我想省去new,直接通过Alice()进行对象的创建呢?或者说我希望AliceFactory===Alice

通过new+构造函数创建对象的特点/标准

1.实例方法的__proto__为构造函数的prototype

2.描述符必须为构造函数(constructor指向)

 实现隐身创建

修补prototype引用

posted on 2015-01-31 11:43  Glimis  阅读(242)  评论(0编辑  收藏  举报