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引用