博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Ext 4 源码解读 (2) - Ext-more.js

Posted on 2011-07-08 15:22  xuld  阅读(893)  评论(2编辑  收藏  举报

源码: 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 验证。 (感谢  darklx 的修正)


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 。