在zepto中,$作为一个选择器而存在,它接收一个字符串,返回一个选择器的数组,并且这个数组有一个属性,叫selector。
通过研究源码,zepto的实现步骤有这么几步:
第一步,定义了一个 $ 的变量,这个变量属于window,并且这个变量的值是Zepto。
"$" in window || window.$ = Zepto;
那么,Zepto到底是什么?其实本质上,它是使用模块模式实现的一个函数。内部核心源码如下:
var Zepto = (function(){ var $ = function(selector, context){ return document.querySelectorAll(selector); } return $; })();
这就是zepto选择器$实现的核心源码!!
在这里,仅仅是使用 querySelectorAll 方法实现了一个简单的选择器。但是在zepto源码中,实现的方式要比这个复杂的多,它是通过return 一个zepto.init()的方法来实现的。
var Zepto = (function(){ var zepto = {}; zepto.init = function(selector, context){ //code } var $ = function(selector, context){ return zepto.init(selector, context); } return $; })();
它的实现就是通过这样的方式来进行的。
然后在zepto.init的方法来实现选择器。但是,此外zepto.init()还实现了其他的一些东西。