zepto內部選擇器qsa方法的實現。css
簡述實現原理:正則表達式
經過判斷傳入的參數類型:數組
若是是'#id',則使用getElementById(id)來獲取元素,而且將結果包裝成數組形式;blog
若是是'.class',則使用getElementsByClassName(class)獲取元素;element
若是是'tagName',使用getElementsByTagName(tagName)獲取元素;zepto
若是參數是複雜的css選擇器,則使用element.querySelectorAll(css選擇器)來獲取元素。get
方法開始定義變量備用:class
found,用於存儲獲取到的元素節點;變量
maybeID,經過傳入的參數第一個字符是否爲'#',判斷當前的參數是id類型;原理
maybeClass,參數的第一個字符若是是'.',判斷當前的參數是className;
nameOnly,無論傳入什麼養的參數,只保留純粹的字母參數,去除掉'.'或者'#';
isSimple,根據前面定義的simpleSelectorRE正則表達式,判斷當前的參數是否爲簡單的選擇器。
return的結果就是qsa方法的返回結果,依然使用了大量的三元運算符?:,逐行解析以下: