backbone 源码解析
来源:互联网 发布:java 强引用 弱引用 编辑:程序博客网 时间:2024/06/04 19:28
1 Backbone.Events 是backbone 框架的基础对象,Backbone.Model 、Backbone.Collection 、Backbone.View 都继承了Backbone.Events 对象。
Backbone.Events 封装了事件的基本操作,如 绑定 、触发 、解除绑定 等常用操作,以及一些不太常用的操作,如:只触发一次的事件。
// Extend a given object with all the properties in passed-in object(s). _.extend = function(obj) { each(slice.call(arguments, 1), function(source) { if (source) { for (var prop in source) { obj[prop] = source[prop]; } } }); return obj; };
通过extend 函数,让Model 、 Collection 、View 都继承Event 属性,即让Model 、 Collection 、View 等都具有事件处理功能
why 用extend 属性的方式扩展类?而非用prototype chain 的方式呢?
细想,其实用prototype chain 也是可行的,但是作者用上述extend 方式,我觉得可以用以下原因解释
1 如果用prototype chain 方式,那么就建立了is-a 的关系。Model is kind of event? 说不通
2 用上述extend 方式,我觉得主要原因是Model 等主要是利用Event实现自身能力增强,而非 is-a 的关系
Model 是 存、取 数据的类,主要的取数据函数有:
构造函数 -> 利用初始化属性赋值
fetch函数-> 利用外部数据,对model重新赋值
可能触发事件的函数有:
set函数,触发change 事件
fetch函数,触发sync 事件
destroy函数,触发destory、sync 事件
validate函数,触发invalid 事件
Collection 是Model 对象的集合。这样,Collection 当然也有存、取数据的功能,此外,Collection 还有对集合进行管理的一些功能,如:push 、pop at、shift等
Collection ,主要的取数据的函数有:
构造函数 -> 利用初始化models 对象,赋值
fetch函数 -> 利用外部数据进行models 的赋值
create函数 -> 在Collection 对象中,创建一个Model 对象(这个model 对象是通过model的构造函数初始化)
View 负责创建一个Dom,负责UI渲染,UI事件响应、数据模型Model的事件绑定处理等功能
通过delegateEvents 函数,实现对事件的绑定
- backbone 源码解析
- Backbone源码解析
- backbone源码分析
- Backbone TodoMVC 源码分析
- Backbone TodoMVC 源码分析
- Backbone源码分析Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- Backbone源码分析-Backbone架构+流程图
- [原创]Backbone源码分析-Backbone架构+流程图
- backbone 学习之全部源码
- backbone源码解读(一篇全)
- backbone.js MVC 架构解析
- Backbone 1.0.0 版 API _ Backbone.Events 解析
- 初识Html5
- oracle 左右连接,全连接
- shell 批量查找替换
- GDB Remote Serial Protocol —— RSP协议解析
- Html5 画图
- backbone 源码解析
- WampServer下成功安装Zend Optimizer [
- 关于我,关于这篇博客
- Oracle9i、10g、11g区别
- 数据库视图的强大
- http://acm.hdu.edu.cn/showproblem.php?pid=2159
- vsftp上传文件出现553 Could not create file解决方法 (包括匿名用户)
- accumulate
- spring.net配置错误:Could not load type from string value ...