为了把 SVG标注 代码抽成一个库,我要学习一下 ztree 是怎么写的。

开始正文。

这只是一个很简单的版本,以后可能会详细分析...

(function ($) {
var settings = {},
roots = {},
caches = {},
_consts = { /*...*/ },
_setting = { /*...*/ },
_initRoot = function (setting) { /*...*/ },
_initCache = function (setting) { /*...*/ },
_bindEvent = function (setting) { /*...*/ },
_unbindEvent = function (setting) { /*...*/ },
_eventProxy = function (setting) { /*...*/ },
_initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { /*...*/ },
_init = { /*...*/ },
data = { /*...*/ },
event = { /*...*/ },
handler = { /*...*/ },
tools = { /*...*/ },
view = { /*...*/ }; $.fn.zTree = {
consts: _consts,
_z: { /*...*/ },
getZTreeObj: function (treeId) { /*...*/ },
destroy: function (treeId) { /*...*/ },
init: function (obj, zSetting, zNodes) { /*...*/ }
}; var zt = $.fn.zTree,
$$ = tools.$,
consts = zt.consts;
})(jQuery);
  • 整个 ztree 是个自执行函数。
  • 因为 ztree 是基于 jQuery 的,所以挂在 jQuery 对象下。自己写库的时候,不需要 jQuery 的话一般挂在 window 对象下。
  • 所有带 _ 的变量都是内部变量。使用者不能调用,或者说不应该调用。
  • $.fn.zTree 之前,不带 _ 的变量,是使用者不直接使用,但是会与使用者传入的数据(设置)对接的变量。
  • 与使用者直接接触的是 $.fn.zTree中的变量 。
 
再来看一下 $.fn.zTree.init。
init: function (obj, zSetting, zNodes) {
/* ... */
var zTreeTools = { /* ... */ }
/ *...* /
return zTreeTools
}

使用者把 配置对象zSetting 数据对象zNodes 传入,得到操作台对象zTreeTools。

此后对这个 ztree实例 的操作都是用这个对象做的。

这也是使用者需要一个变量去接收 init 方法返回的对象的原因。使用者接收到的就是zTreeTools。

更详细的内容待续...

最新文章

  1. 转:浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置
  2. .Net深复制、浅复制
  3. 烂泥:LVM学习之LVM基础
  4. 让IE下支持Html5的placeholder属性
  5. java cmd 命令
  6. Matlab画柱状和折线对照图
  7. Packetbeat协议扩展开发教程(2)
  8. Mysql table ful
  9. SQL查询重复记录
  10. Spring MVC + Security 4 初体验(Java配置版)
  11. 第三篇--Jmeter测试数据库Mysql
  12. DirectX11--ComPtr智能指针
  13. B-Tree与B+Tree简明扼要的区别
  14. 【MySQL】初识数据库及简单操作
  15. Ubuntu释放磁盘空间的几种常用方法
  16. oracle数据库组件列表及相关的数据字典视图
  17. [leetcode]91. Decode Ways解码方法
  18. DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】
  19. selector 选择器
  20. kudu基础入门

热门文章

  1. QT槽函数获取信号发送对象
  2. GitHub 热点速览 Vol.25:距离优雅编程你差个它
  3. Java 重写hashCode()与equals()
  4. 跟着whatwg看一遍事件循环
  5. Excel帮助类
  6. Ubuntu16.04CPU下安装caffe的艰苦历程
  7. 基础的markdown用法
  8. 什么才是市场急需的前端工程师?要价1.8W,HR不敢还嘴!
  9. mysql高可用架构MHA搭建(centos7+mysql5.7.28)
  10. 蓝桥杯javaB组入坑