Zepto.js源碼學習之二

本次主要分享關於上一篇區域2的學習。
區域2爲Zepto的核心部分,它的結構以下dom

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以下圖所示:
clipboard.png函數

這裏只分析了區域2的結構,下一次會深刻到函數語句粒度。學習

相關文章
相關標籤/搜索