Ext4.0源码解读(分享二)
源码: core/src/Ext-more.js
L 44
一来就 44 行? 我也没办法, 上面都是注释。
Ext中的注释是非常多的。然这些注释都是文档注释。关键的注释很少。
L 45
Ext.userAgent 这里使用了navigator.userAgent 说明, EXT 是基于 navigator.userAgent 判断浏览器。
L 46
Ext.cache 这个cache 干吗用? 它是Ext全部缓存 放的地方。
L 47
Ext.idSeed 这东西叫种子, Ext 为了让 id 唯一, 就使用 idSeed , 每使用一次,就 idSeed++ 。
L 48
Ext.BLANK_IMAGE_URL 空图片, 空图片在 IE6 中特别有用,它可以让 inline-block 元素生效。
至于 Ext.BLANK_IMAGE_URL 后面的字符串,其实是请求这幅图片传给服务器的请求头信息。 它包含了文件信息呵 Base64 验证。 不过这是Ext保护自身,浪费字节的一个手段。
L 49
Ext.isStrict
严格模式。 不懂的你可以查看相关资料。
L 50 - 51
Ext.windowId
Ext.documentId
L 57
Ext.isReady 这个值开始是 false,在 Ext.ready 中会赋值 true 。
L 58
Ext.enableGarbageCollector
允许自动回收垃圾。
这个词说起来很高级。
但这里只是配置,具体怎么做见使用的时候再分析。
L 59
Ext.enableListenerCollection
同L58
L 77 - 98
Ext.id 生成独一的 id 。
L 103 - 130
Ext.getXXX 你肯能会认为这些都是常量,为什么不直接放在成员里,比如:
Ext.body , 而要另外使用 Ext.getBody()
因为 Ext-more.js 执行时, document.body 肯能不存在(未载入)。
L 139 - 141
Ext.getCmp 获取已定义的组件
每个组件都有对应id, 它其实缓存了id到组件的对应。这个函数 简单 根据id 返回组件。
L 147- 148
Ext.getOrientation 这个函数主要用于移动平台。
它判断当前浏览器方向。
当然用了很简单但好的方法: 长<宽 就是 垂直的
L 161 - 179
Ext.destroy 释放任何东西
如果是 DOM, 会调用 DOM 自己的 释放。
L 194 - 204
Ext.callback
在某个作用域 执行一个回调函数, 当然如果回调函数不是函数,那忽视它。
Ext.defer 是一个延时执行的方法。
L 211 - 223
Ext.htmlEncode
Ext.htmlDecode
真正的实现在 Ext.String 这里不解释。
L 231 - 236
Ext.urlAppend 如果 URL 有? 则补 & 否则补 ?
L 240
仅仅是简写。因为 Ext.ns 经常被用
L 243
为了加速浏览器找到 undefined 的速度,定义一个 undefined 。
L 250 -279
浏览器检测。具体不说了, 不懂的可以搜索其它内容。
L 280 - 283
这里主要对 IE6 ,让它乖点: 不要让图片一闪一闪。
L 292
Ext.SSL_SECURE_URL 这是空链接, 因为Ext中的控件都是 Javascript 生成, 而很多节点都是本来有href/src 属性的。为了让这些属性不导致问题, 把它们改到 Ext.SSL_SECURE_URL 。即 javascript:"" 。
不过这是更好的办法:
javascript:;
L 322
Ext.USE_NATIVE_JSON
是否使用原生的 JSON 。
不得不承认, 原生的JSON有2个不好的地方: 属性必须使用引号; 不支持 函数。
所以 这个选项, 把最后的选择权给用户。
L 347 - 370
Ext.getDom 这是经常用的。
根据id 获取节点。
IE6 也返回 name = 参数的节点, 因此最后作个过滤。
L 381 - 398
Ext.removeNode
删除节点
同时删除缓存。
IE6/7 下 删除节点竟然还创建了一个 节点。
主要是为了 避免内存泄露。
先把节点 append 到另外的父节点。
这意味着,原来的节点已被删除。
然后父节点 使用 innerHTML = ""
删除子节点。
因为父节点是 DIV , 所以不用担心内存泄露。
L 404 - 544
Ext.isXXX 见上
L 560 - 562
Ext.value
返回值||默认值
L 570 - 572
Ext.escapeRe 替换转义。
比如 "a\'" -> "a\\'"
L 592 - 613
Ext.addBehaviors
它是 绑定事件的 快速法
通过 CSS选择器@事件: 触发函数 格式。
L 622 - 662
Ext.getScrollbarSize/getScrollBarWidth
作者居然再这里忽略了 b 的大小。
函数 getScrollbarSize 内 有 IE9 专用 HACK
L 686 - 696
Ext.copyTo 把指定属性名的 这些属性拷贝到对象。
L 704 - 709
Ext.destroyMembers
对成员 使用 Ext.destroy 释放
L 730 - 831
Ext.log 输出一个日志。
L 857 - 863
Ext.partition 把数组内 满足一个条件的成员和其他的分开。
L 878 - 889
Ext.invoke 对数组每个成员调用函数。
L911 - 949
Ext.zip
Ext.toSentence
过时的东西, 不讨论。
L 958
Ext.useShims
也是对 IE6 flash的 一个 HACK
L 969 - 972
Ext.application 载入同时创建一个 Ext.app.Application 。
Ext4.0源码解读(分享二)相关推荐
- AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking...
我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...
- 知秋源码解读分享系列
作为一个乐于分享的人,我希望通过一些成熟优秀的代码库,来向大家展示读源码思路以及阐述编程方面的技巧,也希望大家从中思考并得到属于自己的一套编程方法论. 半年以来,已进行72小时时长的源码解读分享视频录 ...
- Android6.0源码解读之ViewGroup点击事件分发机制
本篇博文是Android点击事件分发机制系列博文的第三篇,主要是从解读ViewGroup类的源码入手,根据源码理清ViewGroup点击事件分发原理,明白ViewGroup和View点击事件分发的关系 ...
- 知秋源码解读分享系列(转)
前序 知秋:人称飞哥,Java 界真·大佬.我线上认识的朋友,线下也见过好多次.认识这么多年以来给我的印象就是:人好技术更好,在 Java 响应式编程这个领域有着自己独到的见解,并且一直以来都默默无闻 ...
- AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager
做ios开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样. 接下来我们就非常详细的来读一 ...
- print python 带回车_python标准库threading源码解读【二】
紧接着上一篇文章继续解析源码 甘蔗:python标准库threading源码解读[一]zhuanlan.zhihu.com 目录 Event的介绍和用法 Event源码解析 以后的内容尽量少一点并且 ...
- [前沿技术] AMD FSR 1.0源码分析(二)
FSR技术分析 前文:[前沿技术] AMD FSR 1.0源码分析(一) 2. EASU源码分析 2.3 FsrEasuF分析 1️⃣首先,就参数而言,主要是: void FsrEasuF(out A ...
- x264源码解读(二)- VCL和NAL那些事
目录 ANNEXB vs. AVCC VCL vs. NAL signal函数响应键盘事件 收尾清理工作 x264的编码 ANNEXB vs. AVCC 今天我们继续来说一下x264结构中非常重要的属 ...
- spring boot 2.0 源码分析(二)
在上一章学习了spring boot 2.0启动的大概流程以后,今天我们来深挖一下SpringApplication实例变量的run函数. 先把这段run函数的代码贴出来: /*** Run the ...
最新文章
- python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)
- Phpcms v9专题分类增加模板设置的方法
- (002)每日SQL学习:删除名称重复的数据
- INTEROP tile cache
- SAP License:SAP中的PRC增值税概念
- Linux调整时区和同步时间
- SQL Sever 博客文章目录(2016-07-06更新)
- 离散数学:等价关系与集合覆盖
- APKTOOL反编译使用教程
- 计算机控制系统信号恢复之零阶保持器
- 小米10pro手机电路图 主板元件位号图
- python弹性碰撞次数圆周率_关于“用理想弹性碰撞能用来计算π”视频的小讨论...
- IC基础知识(十五)RS触发器、JK触发器、D触发器、T触发器
- NAIC2021-AI+视觉特征编码第一阶段开源方案
- MOS管当开关控制时,一般用PMOS做上管NMOS做下管的原因
- 基于JSP的高校考试排座管理系统
- 微信多订单合并付款_微信小商店订单合并打单,操作分享请收藏!
- 鸿蒙系统深度解读(三)
- onedrive 添加到本地硬盘_Windows平台下使用 Rclone 挂载 OneDrive 为本地硬盘
- 腾讯云数据库 TencentDB for MariaDB快速入门和常见问题