`
y1d2y3xyz
  • 浏览: 257177 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

extjs源码分析-016(Ext....)

阅读更多
Ext.apply(Ext, function(){
  var E = Ext, idSeed = 0;
  return {
     emptyFn : function(){},//空函数
      value : function(v, defaultValue, allowBlank){
            return Ext.isEmpty(v, allowBlank) ? defaultValue : v;
     },
     escapeRe : function(s) {//对特殊字符转义
            return s.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1");
     },
     sequence : function(o, name, fn, scope){//创建队列函数
          o[name] = o[name].createSequence(fn, scope);
      },
      addBehaviors : function(o){//添加时间行为
            if(!Ext.isReady){
                Ext.onReady(function(){
                    Ext.addBehaviors(o);
                });
            } else {
                var cache = {}, // simple cache for applying multiple behaviors to same selector does query multiple times
                    parts,
                    b,
                    s;
                for (b in o) {
                    if ((parts = b.split('@'))[1]) { // for Object prototype breakers
                        s = parts[0];
                        if(!cache[s]){
                            cache[s] = Ext.select(s);
                        }
                        cache[s].on(parts[1], o[b]);
                    }
                }
                cache = null;
            }
        },
         combine : function(){//数据组合,返回组合后的数据
 //把所有参数拼到一个数组中返回 Ext.combine(['a','b'],'c')  返回['a','b','c']
            var as = arguments, l = as.length, r = [];
            for(var i = 0; i < l; i++){
                var a = as[i];
                if(Ext.isArray(a)){
                    r = r.concat(a);
                }else if(a.length !== undefined && !a.substr){
                    r = r.concat(Array.prototype.slice.call(a, 0));
                }else{
                    r.push(a);
                }
            }
            return r;
        },
        copyTo : function(dest, source, names){//把某对象的属性复制给目标对象names为属性名,可以是数组,字符串
           * @param {Object} The destination object.
         * @param {Object} The source object.
         * @param {Array/String} Either an Array of property names, or a comma-delimited list
         * of property names to copy.
         * @return {Object} The modified object.
            if(typeof names == 'string'){
                names = names.split(/[,;\s]/);
            }
            Ext.each(names, function(name){
                if(source.hasOwnProperty(name)){
                    dest[name] = source[name];
                }
            }, this);
            return dest;
        },
        destroy : function(){//清除对象属性,DOM节点
            Ext.each(arguments, function(arg){
                if(arg){
                    if(Ext.isArray(arg)){
                        this.destroy.apply(this, arg);
                    }else if(Ext.isFunction(arg.destroy)){
                        arg.destroy();
                    }else if(arg.dom){
                        arg.remove();
                    }    
                }
            }, this);
        },
         destroyMembers : function(o, arg1, arg2, etc){
            for(var i = 1, a = arguments, len = a.length; i < len; i++) {
                Ext.destroy(o[a[i]]);
                delete o[a[i]];
            }
        },
        clean : function(arr){
            var ret = [];
            Ext.each(arr, function(v){
                if(!!v){
                    ret.push(v);
                }
            });
            return ret;
        },
        unique : function(arr){
            var ret = [],
                collect = {};

            Ext.each(arr, function(v) {
                if(!collect[v]){
                    ret.push(v);
                }
                collect[v] = true;
            });
            return ret;
        },
        getCmp : function(id){//获取组建对象
            return Ext.ComponentMgr.get(id);
        },
        type : function(o){
            if(o === undefined || o === null){
                return false;
            }
            if(o.htmlElement){
                return 'element';
            }
            var t = typeof o;
            if(t == 'object' && o.nodeName) {
                switch(o.nodeType) {
                    case 1: return 'element';
                    case 3: return (/\S/).test(o.nodeValue) ? 'textnode' : 'whitespace';
                }
            }
            if(t == 'object' || t == 'function') {
                switch(o.constructor) {
                    case Array: return 'array';
                    case RegExp: return 'regexp';
                    case Date: return 'date';
                }
                if(typeof o.length == 'number' && typeof o.item == 'function') {
                    return 'nodelist';
                }
            }
            return t;
        },

        intercept : function(o, name, fn, scope){
            o[name] = o[name].createInterceptor(fn, scope);
        },

        // internal
        callback : function(cb, scope, args, delay){
            if(Ext.isFunction(cb)){
                if(delay){
                    cb.defer(delay, scope, args || []);
                }else{
                    cb.apply(scope, args || []);
                }
            }
        }
  }
})
分享到:
评论

相关推荐

    ExtJS-4.2.2-gpl.rar

    "ext-4.2.2-gpl"目录下的源码可以供开发者深入理解ExtJS的工作原理。通过阅读源码,开发者可以学习到如何组织和构建复杂的JavaScript应用,以及如何扩展和定制现有的组件。这对于想要进行性能优化或者开发自定义...

    ExtJS 4.0 改善Ext.grid.plugin.RowEditing (重构,v1.4版本,2011-09-11)

    总的来说,ExtJS 4.0中对RowEditing插件的重构旨在提供更高效、易用且可靠的表格数据编辑功能,同时通过源码分析和文档学习,开发者可以更好地利用这个插件来提升其应用程序的用户体验。尽管具体的改进内容需要通过...

    Ext.Ajax.request跨域

    标题"Ext.Ajax.request跨域"指出我们将探讨如何使用ExtJS库中的Ajax模块进行跨域请求。Ext.Ajax.request是ExtJS提供的一种发起Ajax请求的方式,它允许开发者向服务器发送异步HTTP请求。然而,由于浏览器的同源策略...

    关于extjs ext.tree

    6. **源码分析**: 对于深入理解ExtJS的`ext.tree`,阅读源码是很有帮助的。你可以查看`ext-all.js`或`ext-all-debug.js`文件中关于TreePanel、TreeNode和TreeStore的相关代码,了解其内部实现机制。 7. **扩展与...

    EXTJS3 Ext.PagingToolbar() 快捷键应用

    在EXTJS3中,`Ext....通过以上分析,我们可以看出,`EXTJS3`中的`Ext.PagingToolbar`结合快捷键应用,可以显著提升数据浏览的效率和用户体验。熟练掌握这种技巧,将有助于开发出更高效、易用的EXTJS应用程序。

    ExtJs入门实例(内含N个实例源码)

    ExtJS入门实例、包含各种详细代码,非常适合初学者学习

    ExtJS源码分析与开发实例宝典.part10(带书签)

    Ext+JS源码分析与开发实例宝典 是extjs3.0的学习书 书得内容很不错。深入解析extjs 资源是pdf文档. 本人自己还做了pdf的完整书签目录,便于方便和阅读. 文档比较大,一共压缩成12卷.需12卷全部下载完。 就第一个...

    ExtJS源码分析与开发实例宝典.part07(带书签)

    Ext+JS源码分析与开发实例宝典 是extjs3.0的学习书 书得内容很不错。深入解析extjs 资源是pdf文档. 本人自己还做了pdf的完整书签目录,便于方便和阅读. 文档比较大,一共压缩成12卷.需12卷全部下载完。 就第一个...

    ext JS 源码和学习资料

    一、EXT JS 源码分析 EXT JS 的源码结构清晰,包括核心库、组件、布局、数据管理、表单元素等模块。通过阅读源码,开发者可以了解到EXT JS如何实现组件化、事件处理、数据绑定等功能,进一步优化自己的代码结构和...

    Ext JS源码分析与开发实例宝典光盘源码

    Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发...

    ExtJS源码分析与开发实例宝典

    资源名称:Ext JS源码分析与开发实例宝典内容简介:本书全面系统地剖析了ExtJS 3.0的架构设计原理。通过对源码的“抽丝剥茧”,读者可以掌握Ext JS架构的精妙,从原理层面用活Ext JS。此外,本书还提出了大量的解决...

    Ext+JS源码分析与开发实例宝典.part2.rar

    Ext+JS源码分析与开发实例宝典.pdf,清晰完整版。彭仁夔 编著,2010.1 。该书共6个part,全部下载才能RAR解压。所有下载链接去这里找http://stephegn.download.csdn.net/ 全面剖析Ext JS 3.0的架构原理 透彻体悟...

    extjs实例--------嗖嗖嗖

    1. **ext-all.js**:这是ExtJS库的核心文件,包含了所有组件、数据处理、布局管理等功能的集合。在ExtJS应用中,通常会引入这个文件以获取完整功能。不过,为了优化加载速度和减少页面大小,生产环境中往往会选择...

    Extjs之--图片浏览器

    标题中的“Extjs之--图片浏览器”指的是使用Ext JS框架构建的一个用于展示和浏览图片的应用程序。Ext JS是一个流行的JavaScript库,它提供了丰富的组件和工具,用于构建交互式的Web应用程序。这个图片浏览器可能是...

    Ext+JS源码分析与开发实例宝典.part4.rar

    Ext+JS源码分析与开发实例宝典.pdf,清晰完整版。彭仁夔 编著,2010.1 。该书共6个part,全部下载才能RAR解压。所有下载链接去这里找http://stephegn.download.csdn.net/ 全面剖析Ext JS 3.0的架构原理 透彻体悟...

    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的基础库。...

    ExtJS Chart 扩展 - 增加对数据的过滤等操作

    1. **Ext.data.Store**:在ExtJS中,Store是用来管理数据集的对象。它负责加载、存储和操作数据,并与图表进行绑定。增加对数据的过滤操作可能涉及到对Store的查询功能增强,例如添加自定义筛选条件或使用预定义的...

    ext-addons-7.4.0-trial.zip

    此外,压缩包中的"ext-addons-7.4.0"文件夹很可能包含了这些插件的源码、示例、文档和必要的资源文件。开发者可以通过研究这些资源来学习如何在自己的项目中集成和使用这些高级功能。 总的来说,ExtJS 7.4 Premium ...

Global site tag (gtag.js) - Google Analytics