zoukankan      html  css  js  c++  java
  • Ext 4 源码解读 (2) Extmore.js

    源码: 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 。


  • 相关阅读:
    杜教筛
    单纯形法
    回文树
    模板综合
    不明觉厉的数据结构题2
    gedit脚本
    01分数规划入门
    LCT裸题泛做
    洛谷P4586 [FJOI2015]最小覆盖双圆问题(最小圆覆盖)
    洛谷P1742 最小圆覆盖(计算几何)
  • 原文地址:https://www.cnblogs.com/xuld/p/2096083.html
Copyright © 2011-2022 走看看