源码: 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源码解读(分享二)相关推荐

  1. AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking...

    我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...

  2. 知秋源码解读分享系列

    作为一个乐于分享的人,我希望通过一些成熟优秀的代码库,来向大家展示读源码思路以及阐述编程方面的技巧,也希望大家从中思考并得到属于自己的一套编程方法论. 半年以来,已进行72小时时长的源码解读分享视频录 ...

  3. Android6.0源码解读之ViewGroup点击事件分发机制

    本篇博文是Android点击事件分发机制系列博文的第三篇,主要是从解读ViewGroup类的源码入手,根据源码理清ViewGroup点击事件分发原理,明白ViewGroup和View点击事件分发的关系 ...

  4. 知秋源码解读分享系列(转)

    前序 知秋:人称飞哥,Java 界真·大佬.我线上认识的朋友,线下也见过好多次.认识这么多年以来给我的印象就是:人好技术更好,在 Java 响应式编程这个领域有着自己独到的见解,并且一直以来都默默无闻 ...

  5. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager

    做ios开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样. 接下来我们就非常详细的来读一 ...

  6. print python 带回车_python标准库threading源码解读【二】

    紧接着上一篇文章继续解析源码 甘蔗:python标准库threading源码解读[一]​zhuanlan.zhihu.com 目录 Event的介绍和用法 Event源码解析 以后的内容尽量少一点并且 ...

  7. [前沿技术] AMD FSR 1.0源码分析(二)

    FSR技术分析 前文:[前沿技术] AMD FSR 1.0源码分析(一) 2. EASU源码分析 2.3 FsrEasuF分析 1️⃣首先,就参数而言,主要是: void FsrEasuF(out A ...

  8. x264源码解读(二)- VCL和NAL那些事

    目录 ANNEXB vs. AVCC VCL vs. NAL signal函数响应键盘事件 收尾清理工作 x264的编码 ANNEXB vs. AVCC 今天我们继续来说一下x264结构中非常重要的属 ...

  9. spring boot 2.0 源码分析(二)

    在上一章学习了spring boot 2.0启动的大概流程以后,今天我们来深挖一下SpringApplication实例变量的run函数. 先把这段run函数的代码贴出来: /*** Run the ...

最新文章

  1. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)
  2. Phpcms v9专题分类增加模板设置的方法
  3. (002)每日SQL学习:删除名称重复的数据
  4. INTEROP tile cache
  5. SAP License:SAP中的PRC增值税概念
  6. Linux调整时区和同步时间
  7. SQL Sever 博客文章目录(2016-07-06更新)
  8. 离散数学:等价关系与集合覆盖
  9. APKTOOL反编译使用教程
  10. 计算机控制系统信号恢复之零阶保持器
  11. 小米10pro手机电路图 主板元件位号图
  12. python弹性碰撞次数圆周率_关于“用理想弹性碰撞能用来计算π”视频的小讨论...
  13. IC基础知识(十五)RS触发器、JK触发器、D触发器、T触发器
  14. NAIC2021-AI+视觉特征编码第一阶段开源方案
  15. MOS管当开关控制时,一般用PMOS做上管NMOS做下管的原因
  16. 基于JSP的高校考试排座管理系统
  17. 微信多订单合并付款_微信小商店订单合并打单,操作分享请收藏!
  18. 鸿蒙系统深度解读(三)
  19. onedrive 添加到本地硬盘_Windows平台下使用 Rclone 挂载 OneDrive 为本地硬盘
  20. 腾讯云数据库 TencentDB for MariaDB快速入门和常见问题

热门文章

  1. 对于特殊轨道,是否违反泡利不相容原理?
  2. vijos1153 猫狗大战
  3. 用计算机娱乐教学反思,计算机教学反思
  4. 计算机在初中物理中应用,多媒體计算机技术在初中物理教学中的应用.doc
  5. GBase 8s灾备集群HAC (一) 概述
  6. IT男拒绝枯燥系列之《漫画电子电路》!
  7. 四月IDO第四期,12个热门项目即将上线
  8. css实现滚动时选中区域字体颜色加深
  9. java系统开发注意事项
  10. 关于电脑电流滋滋声解决方法