`
sailorlee
  • 浏览: 42725 次
  • 性别: Icon_minigender_1
  • 来自: 河北唐山
最近访客 更多访客>>
社区版块
存档分类
最新评论

ExtJS精华函数解析(仅个人见解)

阅读更多

One:    Ext的最先开始的精华函数要算Ext.namespace,它采取的是命名空间的方式.从而可以避免各种变量啊.对象的冲突问题

Two:    Ext的apply采取的是对象继承方式,Ext.apply(o,c,object),既o继承c的所有属性.并且o也拥有object的一切属性

Three   Ext的applyIf采取的对象继承方式,这个跟上面的继承有一点不同,Ext.applyIf(o,c)就是只有当o里的对象不存在时才继承.反之就不继承.

Four:   Ext的extend,这个也是整个Ext的精华所在,所有的对象继承,扩展都是根据Ext.extend的方法而来.本人写的一个htmlEditor也才是看懂了extend方法才搞清楚如何写扩展.
        htmlEditor表情扩展查看地址:http://extjs.com/forum/showthread.php?t=13213    http://extjs.com/learn/Image:Face.jpg.jpg
        Ext.extend(sb, sp, overrides)即sb扩展sp的所有对象,overriders即你想增加的对象或者方法.可以覆盖sp的对象也与方法及属性.



这是本人从ext中扣出来的精华部分,大家完全可以根据这个精华自己去写扩展,写框架.

  1. /*
  2. *
  3. * Author:Sloppy
  4. * Date:2007-09-15
  5. * Contact:QQ:35734786
  6. */
  7. if(typeof(Ext)=="undefined"){
  8.         var Ext={};
  9. }
  10. window["undefined"] = window["undefined"];
  11. Ext.apply = function(o, c, defaults){
  12.     if(defaults){
  13.         Ext.apply(o, defaults);
  14.     }
  15.     if(o && c && typeof c == 'object'){
  16.         for(var p in c){
  17.             o[p] = c[p];
  18.         }
  19.     }
  20.     return o;
  21. };
  22. (function(){
  23.         var ua = navigator.userAgent.toLowerCase();
  24.     var isStrict = document.compatMode == "CSS1Compat",
  25.                 isSafari = (/webkit|khtml/).test(ua),
  26.                 isIE = ua.indexOf("msie") > -1,
  27.         isIE7 = ua.indexOf("msie 7") > -1,
  28.         isGecko = !isSafari && ua.indexOf("gecko") > -1;
  29.         if(isIE && !isIE7){
  30.         try{
  31.             document.execCommand("BackgroundImageCache", false, true);
  32.         }catch(e){}
  33.     }
  34.         Ext.apply(Ext,{
  35.                 emptyFn : function(){},
  36.                 applyIf : function(o, c){
  37.             if(o && c){
  38.                 for(var p in c){
  39.                     if(typeof o[p] == "undefined"){ o[p] = c[p]; }
  40.                 }
  41.             }
  42.             return o;
  43.         },
  44.                 extend : function(){
  45.             var io = function(o){
  46.                 for(var m in o){
  47.                     this[m] = o[m];
  48.                 }
  49.             };
  50.             return function(sb, sp, overrides){
  51.                 if(typeof sp == 'object'){
  52.                     overrides = sp;
  53.                     sp = sb;
  54.                     sb = function(){sp.apply(this, arguments);};
  55.                 }
  56.                 var F = function(){}, sbp, spp = sp.prototype;
  57.                 F.prototype = spp;
  58.                 sbp = sb.prototype = new F();
  59.                 sbp.constructor=sb;
  60.                 sb.superclass=spp;
  61.                 if(spp.constructor == Object.prototype.constructor){
  62.                     spp.constructor=sp;
  63.                 }
  64.                 sb.override = function(o){
  65.                     Ext.override(sb, o);
  66.                 };
  67.                 sbp.override = io;
  68.                 Ext.override(sb, overrides);
  69.                 return sb;
  70.             };
  71.         }(),
  72.                 override : function(origclass, overrides){
  73.             if(overrides){
  74.                 var p = origclass.prototype;
  75.                 for(var method in overrides){
  76.                     p[method] = overrides[method];
  77.                 }
  78.             }
  79.         },
  80.                 namespace : function(){
  81.             var a=arguments, o=null, i, j, d, rt;
  82.             for (i=0; i<a.length; ++i) {
  83.                 d=a[i].split(".");
  84.                 rt = d[0];
  85.                 eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
  86.                 for (j=1; j<d.length; ++j) {
  87.                     o[d[j]]=o[d[j]] || {};
  88.                     o=o[d[j]];
  89.                 }
  90.             }
  91.         },
  92.                 urlEncode : function(o){
  93.             if(!o){
  94.                 return "";
  95.             }
  96.             var buf = [];
  97.             for(var key in o){
  98.                 var ov = o[key], k = encodeURIComponent(key);
  99.                 var type = typeof ov;
  100.                 if(type == 'undefined'){
  101.                     buf.push(k, "=&");
  102.                 }else if(type != "function" && type != "object"){
  103.                     buf.push(k, "=", encodeURIComponent(ov), "&");
  104.                 }else if(ov instanceof Array){
  105.                     if (ov.length) {
  106.                             for(var i = 0, len = ov.length; i < len; i++) {
  107.                                 buf.push(k, "=", encodeURIComponent(ov[i] === undefined ? '' : ov[i]), "&");
  108.                             }
  109.                         } else {
  110.                             buf.push(k, "=&");
  111.                         }
  112.                 }
  113.             }
  114.             buf.pop();
  115.             return buf.join("");
  116.         },
  117.                 urlDecode : function(string, overwrite){
  118.             if(!string || !string.length){
  119.                 return {};
  120.             }
  121.             var obj = {};
  122.             var pairs = string.split('&');
  123.             var pair, name, value;
  124.             for(var i = 0, len = pairs.length; i < len; i++){
  125.                 pair = pairs[i].split('=');
  126.                 name = decodeURIComponent(pair[0]);
  127.                 value = decodeURIComponent(pair[1]);
  128.                 if(overwrite !== true){
  129.                     if(typeof obj[name] == "undefined"){
  130.                         obj[name] = value;
  131.                     }else if(typeof obj[name] == "string"){
  132.                         obj[name] = [obj[name]];
  133.                         obj[name].push(value);
  134.                     }else{
  135.                         obj[name].push(value);
  136.                     }
  137.                 }else{
  138.                     obj[name] = value;
  139.                 }
  140.             }
  141.             return obj;
  142.         },
  143.                 isIE : isIE,
  144.         isIE7 : isIE7,
  145.         isGecko : isGecko,
  146.                 isStrict:isStrict
  147.         });
  148. })();

  149. Ext.applyIf(String, {
  150.     escape : function(string) {
  151.         return string.replace(/('|\\)/g, "\\$1");
  152.     },

  153.     /**
  154.                 var s = String.leftPad('123', 5, '0');
  155.                 // s now contains the string: '00123'

  156.      */
  157.     leftPad : function (val, size, ch) {
  158.         var result = new String(val);
  159.         if(ch === null || ch === undefined || ch === '') {
  160.             ch = " ";
  161.         }
  162.         while (result.length < size) {
  163.             result = ch + result;
  164.         }
  165.         return result;
  166.     },

  167.     /**
  168.                 var cls = 'my-class', text = 'Some text';
  169.                 var s = String.format('<div class="{0}">{1}</div>', cls, text);
  170.                 // s now contains the string: '<div class="my-class">Some text</div>'

  171.      */
  172.     format : function(format){
  173.         var args = Array.prototype.slice.call(arguments, 1);
  174.         return format.replace(/\{(\d+)\}/g, function(m, i){
  175.             return args[i];
  176.         });
  177.     }
  178. });

  179. Ext.applyIf(Array.prototype, {
  180.     indexOf : function(o){
  181.        for (var i = 0, len = this.length; i < len; i++){
  182.               if(this[i] == o) return i;
  183.        }
  184.            return -1;
  185.     },
  186.     remove : function(o){
  187.        var index = this.indexOf(o);
  188.        if(index != -1){
  189.            this.splice(index, 1);
  190.        }
  191.     }
  192. });
分享到:
评论

相关推荐

    extjs 常用函数.rar

    在"extjs 常用函数.rar"这个压缩包中,我们重点关注两个特定的函数:`getCMP()` 和 `getDom()`。这两个函数在ExtJS开发中非常常用,帮助开发者获取组件或DOM元素,以便进行后续的操作和交互。 1. `getCMP()` `...

    ASP.NET Extjs精华版图书管理系统源码.rar

    在这个"ASP.NET Extjs精华版图书管理系统源码"中,我们可以推测这是一个结合了ASP.NET后端技术和ExtJS前端技术的图书管理系统。这样的系统通常包括书籍管理、用户管理、借阅与归还、权限控制等功能模块。开发者可能...

    Extjs常用函数和事件.pdf

    在"Extjs常用函数和事件.pdf"中,提到了一些核心类和函数,这些是开发ExtJS应用时经常使用的工具。以下是对这些函数和事件的详细说明: 1. `Ext.onReady(Function fn, Object scope, boolean override)`:这是ExtJS...

    extjs读取解析后端json格式数据显示条形图

    在本案例中,我们将深入探讨如何使用ExtJS读取并解析后端返回的JSON格式数据,然后将这些数据呈现为动态的条形图,以实现吸引用户注意力的视觉效果。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据...

    ExtJs-API中的一些重要的详解文档

    除此之外,ExtJS API还包含许多其他有用的工具函数,如`Ext.encode()`和`Ext.decode()`用于JSON编码和解码,`Ext.mixin()`用于混合类的功能,以及`Ext.create()`用于动态创建组件。这些函数和方法共同构成了ExtJS...

    EXTJS讲解个人项目经历

    EXTJS应用通常从`Ext.onReady`函数开始执行,这是因为在DOM加载完成后,EXTJS会调用这个函数。你可以在此函数中定义初始化的代码,例如显示警告消息或者创建UI组件。 3. **创建组件**: 创建EXTJS组件,例如一个...

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 方案 ...可以看到,ExtJS4 使用 Ext.create 函数来创建组件类,这样可以更加方便地创建组件。 ExtJS3 升级到 ExtJS4 需要修改大量代码,需要我们重新学习和适应 ExtJS4 的新特性和变化。

    EXTJS单元格变色、行变色

    在EXTJS中,单元格变色可以通过renderer函数来实现。renderer函数是Grid Panel中 columns配置项的一个属性,用于格式化单元格的内容。在上面的代码中,我们可以看到,renderer函数fnColumnColor被应用于“人员名称”...

    EXTJS实用开发指南_个人整理笔记.pdf

    1. Ext.onReady函数:在EXTJS库文件及页面内容加载完后,EXTJS会执行Ext.onReady中指定的函数。 2. 控件的使用:使用EXTJS提供的控件,如面板、选项板、表格、树、窗口、菜单、工具栏、按钮等等。 三、EXTJS控件 ...

    Extjs项目之个人理财项目源码

    Extjs项目之个人理财项目源码 Extjs项目实例

    ExtJs表格grid中文排序函数方法

    ExtJs中文排序函数方法详解 在ExtJs框架中,实现中文排序功能是一件非常重要的事情。今天,我们将详细介绍如何使用ExtJs实现中文排序,特别是使用Ext.data.Store.prototype.createComparator()函数来实现中文排序。...

    Extjs4使用要点个人整理

    JSONStore是ExtJS用于处理JSON格式数据的存储类,它可以与Ajax请求配合使用,自动加载和解析数据。 7. **Ajax提交超时**:`Extjs ajax提交超时.txt`可能涉及Ajax请求的超时设置和处理。在ExtJS中,可以设置请求的...

    Extjs4的FormPanel从后台load json数据的要点

    在本篇文章中,我们将深入探讨如何使用Extjs4中的FormPanel组件从后台加载JSON数据,并将其映射到表单的各个字段中进行显示。这是一项非常实用的技术,尤其是在需要动态填充表单的情况下。 ### 一、Extjs4 ...

    轻松搞定Extjs 带目录

    Extjs的`Ext.util.Format`类提供了一组内置的格式化函数,用于文本、日期和数字的格式化。还可以自定义格式化函数,或者通过`XTemplate`进一步自定义内容。 #### 8. 组件结构 Extjs的组件结构复杂且功能强大,包括...

    Extjs精华版图书管理系统源码_商业源码_sqlserver_ExtJS6._extjs_V2_

    Extjs精华版图书管理系统功能比较强大。该源码 图书管理系统功能实现不是重点,重点是演示对Extjs二次封装使用,进行深入学习。 比较适合对Extjs的学习和进阶以及商业应用,有需要的朋友们不要错过啊。模式:WebForm...

    Extjs4 treePanel节点刷新JS函数

    完美的Extjs4 treePanel节点刷新,函数为自动刷新选中的节点.API看得头疼才别出来的代码.截止我发之前,好像没有谁共享这个功能的函数吧.

    extjs流程界面设计器参考_ExtJS工作流设计器_extjs工作流_extjs_

    ExtJS是一种广泛使用的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的组件和工具,使得开发者可以创建出功能强大、用户界面友好的Web应用。在“extjs流程界面设计器参考”中,我们主要关注的是...

    ExtJS快速入门 ExtJS快速入门 ExtJS快速入门

    ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门ExtJS快速入门 ExtJS快速入门 ExtJS...

    ExtJs-3.2.0.rar

    ExtJS是一个基于JavaScript的开源富客户端框架,专为构建企业级Web应用程序而设计。这个"ExtJs-3.2.0.rar"压缩包包含了ExtJS 3.2.0版本的所有资源,允许开发者利用其强大的组件库和丰富的功能来创建交互式、数据驱动...

Global site tag (gtag.js) - Google Analytics