ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
将zepto-core的源码下载下来,然后看到最外层的结构是这样的 ![](image/577794e10b241.png) 首先`window.Zepto`和`window.$`都赋值了`Zepto`这个变量,`Zepto`是个自执行的匿名函数,看源代码的最后几行,匿名函数返回了`$`变量 ```js return $ })() // If `$` is not yet defined, point it to `Zepto` window.Zepto = Zepto window.$ === undefined && (window.$ = Zepto) ``` 而代码中有如下几行,证明`Zepto`最终是个函数。 ```js $ = function(selector, context){ return zepto.init(selector, context) } ``` 可以来测试一下,在运行zepto的页面中来验证 ```javascript console.log( typeof window.$ ); // 'function' ``` 总结一下,简单写来,这个结构可以简单模拟成这样: ```javascript var Zepto = (function(){ var $ // ...省略N行代码... $ = function(selector, context){ return zepto.init(selector, context) } // ...省略N行代码... return $ })() window.Zepto = Zepto window.$ === undefined && (window.$ = Zepto) ``` 而且,在这里我们还可以看到,平常我们`$('p')`使用zepto的时候,最终顺藤摸瓜会执行到`$ = function(selector, context){`这个函数中(其中的内容可不深究),而`p`这个选择器也会传递给`selector`参数。这是我们下一节要讲述的内容。