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方法的返回结果,依然使用了大量的三元运算符?:,逐行解析以下: