`

[ExtJS3.2源码每天一小时](1)ext-base.js做了什么(之一)

阅读更多

    ext-base.js 是我们使用ExtJS之前必须要引入的文件,我们今天就来分析一下,ext-base中它究竟干了什么。
    首先ext-base这个文件包含了ExtJS的版本信息、最基本的Functions及Utilities,以及最重要的Ext对象。
    1.window.undefined = window.undefined;
       在较早的浏览器中因为window.undefined不存在所以会返回undefined,将此赋给等号前的window.undefined这样后面就可以直接使用if    (a==="undefined")的判断方式了。在新版本的浏览器中window.undefined=undefined;因此不会造成什么负面影响。 
除了使用window.undefined=window.undefined和window["undefined"]=window["undefined"]外,还有很多别的办法来实现对IE5及之前浏览器的兼容,如 
var undefined = void null; //void函数永远返回undefined 
var undefined = function(){}(); 
var undefined = void 0; 
只要等号后的表达式返回undefined即可。 
    2.Ext.apply(a,b)方法,这个方法将b对象中的属性加到a对象中或者覆盖a对象的属性值。

       var a = {age:12};

       var b = {name:'lion',age:15}

       Ext.apply(a,b);

       那么现在的a 就是{age:15,name:'lion'}

     

     Ext.applyIf(a,b)方法,这个方法将b对象的不存在于a对象中的属性拷贝到a对象中,相同的属性不再覆盖。

       var a = {age:12};

       var b = {name:'lion',age:15}

       Ext.applyIf(a,b);

       那么现在的a 就是{age:12,name:'lion'}

 

  

    3.最重要的就是其中的自运行函数了,什么是自运行函数呢?例如:function(a){alert(a)}(1); 这样加载这段js代码的时候就会执行其中的逻辑,弹出就会显示1,有时候为了明显的指明这是一个自运行函数,故写成(function(a){alert(a)})(1); Ext-base中就采用了这种方式。

       这个自运行函数中做了哪些工作呢?可想而知,这些工作对于Ext的运行是非常之重要了。

       (1)document渲染类型的判断

              首先解释一下什么叫渲染类型

              document.compatMode:可以用来判断当前页面采用的渲染方式。

              BackCompat:标准兼容模式关闭。
              CSS1Compat:标准兼容模式开启。

              当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;
              当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。

              Ext拿到浏览器的渲染类型后,对于Ext的组件布局的渲染打下了基础,另外对于IE浏览器使用非兼容渲染模式BackCompat时,Ext专门定义了一个变量isBorderBox来更好的支持IE的布局。

       (2)浏览器类型、操作系统、url链接类型的判断

              能够判断浏览器的类型:Opera、Chrome、WebKit、Safari、Safari2、Safari3、Safari4、ie6、ie7、ie8、Gecko、Gecko2、Gecko3;

              能够判断操作系统的类型:windows、linux、mac;

              能够判断的链接类型:https 安全连接;

              注:为什么Ext要判断是否是https安全连接呢?因为在使用https环境下,ie的iframe的页面about:blank引用会出现问题,iframe在页面上就会显示出一个小框,提示使用了不同的协议无法显示,此时将about:blank换为JavaScript:''即可解决。Ext的大师们把这一点都考虑进去了。

            

              所有的以上判断都是用正则表达式匹配来实现的。另外发现了正则表达式中“i”关键字的功能是忽略大小写。

 

        (3) 解决IE6下图片缓存及鼠标操作背景图抖动问题

             document.execCommand("BackgroundImageCache", false, true);

       (4)将Ext对象中打入dom是否ready标记、垃圾回收器是否启用标记、事件回收器是否启用标记(垃圾回收器回收时是否启用它)、级联事件回收器是否启用(节点删除时是否将其孩子结点的事件都删除)、是否使用本地浏览器解析JSON数据。

 

        (5)唯一节点ID生成方法,以前一直弄不明白Ext.id()这个方法为什么能够得到全局唯一的ID值呢,现在弄明白了,原来在这个函数中,Ext设置了一个变量idSeed,初始时为0,当我们调用Ext.id()时,这个idSeed就会加1,并且追加一些Ext特有的前缀组合成一个唯一ID串返回给我们。

 

        (6)最重要的莫属extend方法了,明天继续分析,今天就到这吧。

        

 

分享到:
评论
1 楼 clskkk2222 2012-03-08  
博主辛苦,写的很到位,受教了

相关推荐

    extjs-basex.js

    ExtJS 是一个流行的JavaScript框架,主要用于构建富客户端的Web应用程序。`extjs-basex.js`文件很可能是ExtJS库的一个部分,特别是针对BaseX扩展的功能。BaseX是一个高性能、XML数据库系统,常用于处理XML数据。在...

    Ext导出Excel源码

    5. `ext-all-debug.js`, `ext-all.js`, `ext-base.js`:这些是ExtJS库的文件,`ext-all-debug.js`是包含所有组件和功能的调试版本,`ext-all.js`是压缩和优化过的生产版本,`ext-base.js`是ExtJS的基础库。...

    Ext框架简介-Ext框架简介

    其中 ext-base.js 是框架基础库,ext-all.js 是 extjs 的核心库。 helloWord 示例程序是使用 ExtJS 创建的简单示例程序。首先需要在 HTML 文件中引入 ExtJS 的样式及 ExtJS 库文件,然后使用 Ext.onReady 函数来...

    界面框架extjs学习笔记

    - `extjs/adapter/ext/ext-base.js`:EXTJS的基础库,必须先于`ext-all.js`引入。 - `extjs/ext-all.js` 或 `extjs/ext-core.js`:根据需求选择引入完整库或仅核心库。 配置BLANK_IMAGE_URL是解决图像路径问题的一...

    extjs中文解决方案/Eclipse下的js和ext开发

    <script type="text/javascript" src="<%=contextPath%>/public/js/ext-base.js"> <script type="text/javascript" src="<%=contextPath%>/public/js/ext-all.js"> ``` 2. **加载中文语言包** 为了使ExtJS组件...

    ext入门学习.pdf

    在实际开发中,我们只需要引入必要的CSS、JavaScript文件,如`ext-all.css`、`ext-base.js`和`ext-all.js`。 编写第一个“Hello World”程序,可以创建一个HTML文件,引入ExtJS的库文件,并在`onReady`函数中设置一...

    很好的Extjs学习文档

    Ext JS 是一个强大的JavaScript开发框架,专用于构建富客户端Web应用程序。它以其丰富的用户界面组件和高效的Ajax交互闻名。在本文中,我们将深入探讨Ext JS的基础知识,包括框架简介、环境搭建、HelloWorld示例以及...

    Ext框架简介.ppt

    <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"> <script type="text/javascript" src="extjs/ext-all.js"> ``` 然后,可以通过`Ext.onReady`函数在页面加载完成后执行特定的JavaScript代码...

    Ext教程_javakc

    <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"> <script type="text/javascript" src="extjs/ext-all.js"> Ext.onReady(function() { Ext.MessageBox.alert("hello", "Hello World"); }); ...

    Extjs简明总结(教程)

    通常,这包括`resources/css/ext-all.css`和`extjs/adapter/ext/ext-base.js`以及`extjs/ext-all.js`。一旦这些文件加载完成,你可以通过`Ext.onReady`函数来启动你的应用程序,这是每个ExtJS应用的入口点。 ExtJS...

    ExtJs部署及使用方法

    - `extEngine/adapter/ext/ext-base.js`: 适配器脚本文件。 - `extEngine/resources/css/ext-all.css`: ExtJs默认样式表。 - `js/ext-lang-zh_CN-GBK.js`: 支持中文语言包(如果需要)。 2. **自定义JavaScript...

    让我们开始EXTJS之旅

    <script type="text/JavaScript" src="ExtJS2/adapter/ext/ext-base.js"> <script type="text/JavaScript" src="ExtJS2/ext-all.js"> Ext.BLANK_IMAGE_URL = 'ExtJS2/resources/images/default/s.gif'; Ext....

    ext入门学习文档

    <script type="text/javascript" src="/ext3test/common/js/ext-base.js"> <script type="text/javascript" src="/ext3test/common/js/ext-all.js"> <script language="javascript"> Ext.onReady(function(){ ...

    extjs实例教程附带源码

    <script type="text/javascript" src="./scripts/ext/adapter/ext/ext-base.js"> <script type="text/javascript" src="./scripts/ext/ext-all.js"> <script type="text/javascript" src="./scripts/ext/build/...

    EXTJS.docx

    - **ext-base.js**:包含EXT的核心代码,是框架的基础,负责处理DOM操作、事件管理等底层任务。 - **ext-core.js**:封装了EXT的核心组件,如面板、按钮、网格等,是构建用户界面的关键。 - **ext-core-debug.js**:...

    EXT 2.2 的HELLO WORD 创建详程

    Ext JS 2.2版本是较早的版本之一,它提供了一套丰富的组件库,能够快速构建丰富的用户界面。 2. 创建Ext JS Hello World的基本步骤: a. 下载Ext JS:首先需要下载Ext JS的2.2.1正式版文件,可以从官方网址下载(*...

    ext-2.3.0+CKEditor 3.0.1+ckfinder_asp_1.4配置详解及工程源码

    <script type="text/javascript" src="ext-2.3.0/adapter/ext/ext-base.js"> <!-- ENDLIBS --> <script type="text/javascript" src="ext-2.3.0/ext-all.js"> <script type="text/javascript" src="js/...

    ext js教程PPT

    ExtJS 是一个强大的JavaScript库,专门用于构建富客户端(RIA)Web应用程序。它以其美观的用户界面组件和高效的Ajax交互而著称。本教程PPT将深入探讨ExtJS的核心概念和使用方法。 首先,让我们从ExtJS的简介开始。...

    ExtJS 学习专题(一) 如何应用ExtJS(附实例)

    - Ext-all.js:压缩后的全部ExtJS源码文件。 - ext-all-debug.js:未压缩的全部ExtJS源码文件,用于开发和调试。 - ext-core.js:压缩后的ExtJS核心组件文件。 - ext-core-debug.js:未压缩的ExtJS核心组件文件。 2...

Global site tag (gtag.js) - Google Analytics