Extjs源码中core目录下的Ext.js详解

Ext.apply:  
            Ext.apply: Ext.apply = function(C, D, B){
                if (B) {
                    Ext.apply(C, B);
                }
                if (C && D && typeof D == "object") {
                    for (var A in D) {
                        C[A] = D[A];
                    }
                }
                return C;
            };
该段代码的作用是实现对象的继承。 参数意义: 如果只传入两个参数,则将C继承D的所有方法属性,如果定义了B则每次都先继承B的方法属性然后再继承D的方法属性,即B是默认继承对象。
参考代码:
    < script type="text/javascript" language="JavaScript">var b = {
                b1: "dd",
                b2: "ff"
            };
            var a = Ext.apply(this, b);
            for (var i in a) {
                if ((i == "b1") || (i == "b2"))
                    alert(i + ":" + a[i]);
            }
        </script>
Ext.applyIf :参数传入同上面的C,D顺序,如果D中的属性在C中已经定义,则不覆盖值,否则才新增属性
参考代码:        
<script type="text/javascript" language="JavaScript">           
            var b = {
                b1: "dd",
                b2: "ff"
            };
            var c = {
                b1: "ff",
                b3: "b3"
            };
            var a = Ext.apply(this, b);
            a = Ext.applyIf(this, c);
            for (var i in a) {
                if ((i == "b1") || (i == "b2") || (i == "b3"))
                    alert(i + ":" + a[i]);
            }
</script>
Ext.addBehaviors
在文档完成是通过选择器给相应的element增加时间监听器。
示例代码:
// add a listener for click on all anchors in element with id foo
Ext.addBehaviors({   
  '#foo a@click': function(e, t)
{ // do something },   //id=foo 的 a标签下的cliak事件 
 // add the same listener to multiple selectors (separated by comma BEFORE the @)   
 '#foo a, #bar span.some-class@mouseover' : function(){
// do something   
} }); // 多个事件       
Ext.id:       
源码中定义如下:   
// el 为混合类型,即传入id或dom对象,prefix为前缀,若为空则使用ext-gen做id的      
id : function(el, prefix){              
 prefix = prefix || "ext-gen";   // 默 认前缀
el = Ext.getDom(el);            
var id = prefix + (++idSeed);            
return el ? (el.id ? el.id : (el.id = id)) : id;        
}
 Ext.extend: 详见本blog关于Extend的文章
  7 Ext .namespace( String namespace1, String namespace2, String etc ) : void 创建命名空间: Ext .namespace("Company","MyNS.mydata","Data.format.string") 然后可以创建如 MyNS.mydata.doit=function(){…} 的接口 注:命名空间的简易调用: Ext .ns() ,在 Ext Api 中未给出此用法。 8 Ext .urlEncode( Object o ) : String 将一个 json 对象转换称 url 参数串,支持通过数组为一个参数设定多个值。 如将 {a:1,b:2,c:[1,3,5,7]} 转换为 a=1&b=2&c=1&c=3&c=5&c=7 9 Ext .urlDecode( String string, [Boolean overwrite] ) : Object url 参数串转换为 json 对象, overwrite 如果为 true ,则后面的同名参数值覆盖前面的同名参数值(默认为 false 即不覆盖而以数组形式返回)。 Ext.urlDecode("a=1&b=2&c=1&c=3&c=5&c=7") 返回的对象内容为 {a:1,b:2,c:[1,3,5,7]} Ext.urlDecode("a=1&b=2&c=1&c=3&c=5&c=7",true) 返回 {a:1,b:2,c:7} 10 Ext .each( Array/NodeList/Mixed array, Function fn, Object scope ) : void 遍历 array 并对每项分别调用 fn 函数。如果 array 不是数组则只执行一次。 如果某项 fn 执行结果返回 false (必须是 false undefined 无效),遍历退出,后面的 array 项将不被遍历。 遍历过程中每次为 fn 传入参数分别为 [ 当前数组项 ] [ 当前索引 ] [ 数组 array] 三个参数。 Scope 用于设定 fn 函数中的 this 指针。 Ext.each([1,3,5,7],function(v,i,a){ alert("index: "+i+" value: "+v+" array.length "+a.length) }); 将循环弹出: index:0 value:1 array.length 4 index:1 value:3 array.length 4 index:2 value:5 array.length 4 index:3 value:7 array.length 4 Ext.each([1,3,5,7],function(v,i,a){ alert("index: "+i+" value: "+v+" array.length "+a.length); return v!=5; // 到第三项后遍历退出 }); 将循环弹出: index:0 value:1 array.length 4 index:1 value:3 array.length 4 index:2 value:5 array.length 4 11 Ext .combine(arg1,arg2..argn) : Array // 该方法在 Ext 2 不推荐再使用 用于实现对数组的合并,如果是字符串则作为只有一项的数组合并。 var a1=[1,3,5],b1=["a","b","c"];var c1="xxyznbde"; Ext.combine(a1,b1,c1) 返回 [1,3,5,a,b,c,xxyznbde] 12 Ext . escapeRe( String str ) : String 将属于正则里的特殊字符进行转义。 Ext.escapeRe("(ab)$/sa342{}[dd]") 将返回 /(ab/)/$sa342/{/}/[dd/]

13、Ext.callback(cb, scope, args, delay) :void //该方法为Ext的内部方法 调用一个函数或延迟调用一个函数。 Cb:调用的函数。 scope:cb中this指针。 args:传如cb的参数,以数组形式表示。 delay:延迟多少毫秒执行cb。 如 Ext.callback(function(x,y){alert(x+y)},this,[3,5],1000);将于1秒钟后弹出8,即3+5的结果。 14、Ext.getDom( Mixed el ) : HTMLElement 根据传入的id/dom节点/Ext的Elemenet对象,返回其dom对象。 如alert(Ext.getDom("a").innerHTML);或 alert(Ext.getDom(document.getElementById("a")).innerHTML); 将返回id为a的元素的innerHTML内容。 15、Ext.getDoc()/Ext.getBody() : Ext.Element 分别返回页面的document对象和body对象,返回值为Ext的Element对象,而非Dom对象。 16、Ext.getCmp( String id ) : Ext.Component 根据传入的html元素id返回该元素的组件类型,返回值为Ext的Component对象。 必须保证该id对象的元素是Ext的一个内部组件(通过Ext创建的组件),否则什么都不返回。 17、Ext.num( Mixed value, Number defaultValue ) : Number 验证value是否是一个数字,如果是则直接返回否则返回defaultValue。 如 alert(Ext.num(5,7))返回5,alert(Ext.num("5",7)) 返回7 18、Ext.destroy( Mixed arg1, Mixed (optional), Mixed (optional) ) : void 销毁创建的Element或组件(Component),即销毁其所有的事件监听,dom节点,并调用对象本身的destory方法(如果存在的话),传入的参数类型为Ext.Element或Ext. Component,可以一次性传入多个对象进行销毁。 如 Ext.destory(menu,el,Button);会销毁menu,el,Button三个对象。 19、Ext.removeNode(htmlElement el): void //Ext内部方法 删除指定的dom节点。传入参数为dom对象。 如 Ext.removeNode(document.getElementById("ab")); 20、Ext.type( Mixed object ) : String 返回传入的对象的类型。 包括如下类型: string,number,boolean,function,object,array,regexp,element,nodelist,textnode,whitespace 如 Ext.type("ab")返回string Ext.type(20)返回number Ext.type([3,5,6])返回array Ext.type(/reg/)返回regexp Ext.type(document.body)返回element。 21、Ext.isEmpty( Mixed value, [Boolean allowBlank] ) : Boolean 检查一个值是否为null/undefined或是否是空,如果是则返回true。 如果传入allowBlank为true,则只检查是否为null或undefined。 如: Ext.isEmpty("a")返回false, Ext.isEmpty("")返回true, Ext.isEmpty("",true)返回false, Ext.isEmpty(null)返回true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值