首先看的是整体框架,

// zepto骨骼,这个函数的作用使得Zepto(slector, context)使用很多$.fn里面的方法
var Zepto = (function(){
// zepto是一个命名空间
var $, zepto = {} // 这是一个工厂方法,返回一个数组
zepto.Z = function(dom, selector) {
dom = dom || []
// 不知道__proto__和prototype的区别了吧,一个是对象的,另一个是方法的。new出来的对象的__proto__和构造函数的prototype一致
dom.__proto__ = $.fn //通过给dom设置__proto__属性指向$.fn来达到继承$.fn上所有方法的目的
dom.selector = selector || ''
return dom
} // zepto.init方法也只是zepto.Z的一个马甲
zepto.init = function(selector, context){
var dom
return zepto.Z(dom, selector)
} // $是一个方法,是zepto.init方法的马甲
$ = function(selector, context) {
return zepto.init(selector, context)
} // $.fn包含了一大堆方法
$.fn = {} // zepto.Z方法new出来的对象继承了$.fn里面的一大堆方法。从前面看到zepto.Z方法里面有dom.__proto__ = $.fn,这就意味着zepto.Z工厂函数造出来的对象 instanceOf zepto.Z为true
zepto.Z.prototype = $.fn $.zepto = zepto return $
})() window.Zepto = Zepto
'$' in window || (window.$ = Zepto) // 事件处理
;(function($){ })(Zepto) // Ajax处理
;(function($){ })(Zepto) // CSS3动画
;(function($, undefined){ })(Zepto)

基本上这类DOM库的骨骼构造思想是,分隔初始化构造器函数,与原型对象的作用域,又能够在返回实例中访问原型对象。

在这里,zeptojs和jquery的做法有点不同,zeptojs是运用工厂模式生成带一大堆方法的对象来搞,jquery则是构造函数更改原形链来搞。

var $ =jQuery = function(){
return new jQuery.fn.init();
}
jQuery.fn = jQuery.prototype = {
init : function(){
this.length = 0;
this.test = function(){
return this.length;
}
return this;
},
jquery: "1.3.2",
length: 1,
size: function() {
return this.length;
}
}
jQuery.fn.init.prototype = jQuery.fn; //使用jQuery的原型对象覆盖init的原型对象
alert( $().jquery ); //返回"1.3.2"
alert( $().test() ); //返回0
alert( $().size() ); //返回0

这两种方式,谁优谁劣呢,私以为zeptojs。

zeptojs库解读1之整体框架的更多相关文章

  1. zeptojs库解读3之ajax模块

    对于ajax,三步骤,第一,创建xhr对象:第二,发送请求:第三,处理响应. 但在编写过程中,实际中会碰到以下问题, 1.超时 2.跨域 3.后退 解决方法: 1.超时 设置定时器,规定的时间内未返回 ...

  2. zeptojs库解读2之事件模块

    第一,通过obj.addEventListener("click",fn)绑定的事件,你不能通过obj.onclick = null;来移除绑定点击事件的所有回调函数. 所以引入第 ...

  3. iOS学习——iOS 整体框架及类继承框架图

    整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...

  4. Duilib源码分析(一)整体框架

    Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...

  5. 初识cocos2d-x-从环境配置到整体框架

    前言 ACM生涯在带着些许遗憾中结束了.春招的时候找了一份游戏开发的工作,现在学习cocos2dx中. 从ACM竞赛到实际项目开发的学习,第一感觉就是不适应,虽然感觉实际项目的确要比ACM简单的多.最 ...

  6. jQuery源码分析之整体框架

    之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总 ...

  7. Java集合系列:-----------01集合的整体框架

    内容来自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映 ...

  8. [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码

    这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西,  当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥,  只 ...

  9. 关系型数据库工作原理-数据库整体框架(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

随机推荐

  1. 【BZOJ3434】[Wc2014]时空穿梭 莫比乌斯反演

    [BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间 ...

  2. linux 程序启动与停止管理脚本

    公司接了一个第三方的系统,基于linux写的几个程序,一共有9个部件,第三方没有给脚本,每次启动或停止都得一个一个手工去停止或修改.......,这里稍微鄙视下. 没办法,求人还不如自己动手写, 需求 ...

  3. apache+tomcat实现session共享

    apache+tomcat上篇文章,实现了负载均衡,现在我们实现session共享 一.tomcat集群配置,session 同步配置: tomcat1配置  A.修改Engine节点信息: < ...

  4. 用Oracle实现ASH的数据透视图

    11g里面有个很有用的新特性,对数据透视图的支持. 简单而言,它可以实现宽表和窄表之间的转化.举一个例子,有一张表记录了全校所有班级所有学生的成绩(A,B,C,D,E),现在想统计每个班级里每个分数级 ...

  5. 使用pidstat查看进程资源使用情况

    简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...

  6. 2.5 – Garbage Collection 自动垃圾回收 Stop-the-world vs. incremental vs. concurrent 垃圾回收策略

    2.5 – Garbage Collection  自动垃圾回收 Lua 5.3 Reference Manual http://www.lua.org/manual/5.3/manual.html# ...

  7. Linux知识总汇

    Linux相关教程 Linux的安装以及基础配置 Linux上安装Python3 Linux上安装pip以及setuptools Linux上安装MySQL Linux上安装Django Linux上 ...

  8. 爬虫之selenium使用

    详细使用链接: 点击链接 selenium介绍: selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质 ...

  9. 003-and design-在create-react-app项目中使用antd

    一.概述 create-react-app 是业界最优秀的 React 应用开发工具之一,本文会尝试在 create-react-app 创建的工程中使用 antd 组件,并自定义 webpack 的 ...

  10. PhotoSwipe中文API(一)

    入门 您应知道之前先做起事情: 1. PhotoSwipe不是一个简单的jQuery插件,至少基本的JavaScript知识才能安装. 2. PhotoSwipe需要预定义的图像尺寸(更多关于这一点) ...