Zepto.js源码进修之二

本次重要分享关于上一篇地区2的进修。
地区2为Zepto的中心部份,它的构造以下

var Zepto = (function() {
   var $, zepto = {};
   function Z(dom, selector) {}
   zepto.Z = function(dom, selector) {
      return new Z(dom, selector)
   }
   zepto.isZ = function(object) {
      return object instanceof zepto.Z
   }
   zepto.init = function(selector, context) {
      blablabla...
      return zepto.Z(dom, selector);
   }
   $ = function(selector, context) {
      return zepto.init(selector, context)
   }
   zepto.qsa = function(element, selector) {
      blablabla...
   });
   $.fn = {
      blablabla...
   };
   zepto.Z.prototype = Z.prototype = $.fn;
   $.zepto = zepto;
});

为了便于梳理思绪,以上代码省略了细节,只保留了表面头绪。
这段代码起首定义了两个变量$和zepto,一个类Z;然后给空对象zepto定义属性和要领,个中zepto.Z取得类Z的一个实例,至于zepto.init,从默许实行return zepto.Z(dom, selector)能够得知,它也是取得类Z的实例,只是有能够由于参数差别作差别处置惩罚,在深切细节之前权且这么明白;$是一个函数,返回值为zepto.init(),亦即类Z的实例;zepto.Z.prototype = Z.prototype = $.fn是为建立的类Z的实例设置原型属性,同时为类Z设置原型属性;$.zepto = zepto则是将以上种种处置惩罚取得的对象zepto悬挂到$上作为属性zepto。
终究暴露给开发者的$.zepto以下图所示:
《Zepto.js源码进修之二》

这里只剖析了地区2的构造,下一次会深切到函数语句粒度。

    原文作者:清晖
    原文地址: https://segmentfault.com/a/1190000008013933
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞