zepto版本为1.0。
这一章来看看进口是怎样完成的。
我们平常是如许用的:$(“#test”),在196行,zepto定义了函数$:
$ = function(selector, context){
return zepto.init(selector, context)
}
这里的init要领做了些什么呢?在160行,能够看到,这里是依据差别参数返回差别的对象:
什么都没有传入,返回一个空的zepto对象
假如是一个函数,那末实行dom ready
假如已经是一个zepto对象,直接返回
假如是window,document,实际上也是直接返回
假如是一个html片断,那末天生节点
假如上述情况都不是,那末就用选择器document.querySelectorAll猎取dom对象
然后将获得的对象传入zepto.Z,来到143-148行:
zepto.Z = function(dom, selector) {
dom = dom || []
dom.__proto__ = arguments.callee.prototype
dom.selector = selector || ''
return dom
}
这里是进口最症结的步骤之一。实际上,zepto内部保护的的对象是一个类数组对象(这里的dom)。然后用zepto.Z的原型覆蓋了此类数组的的原型。那末zepto.Z的原型又是什么呢?我们跳到第608行:
zepto.Z.prototype = $.fn
那末$.fn是什么呢?再看278-550行:
$.fn = {
//种种要领
}
因而,zepto.Z返回的类数组对象就有了$.fn的种种要领了。大略的流程能够归结为:
挪用$函数
依据传入的参数天生对象。
重置对象的原型,使之具有一系列要领