您的位置:首页 > Web前端 > JavaScript

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

2008-07-10 10:56 761 查看
[align=left]Ext.apply: [/align]
[align=left] Ext.apply: Ext.apply = function(C, D, B){[/align]
[align=left] if (B) {[/align]
[align=left] Ext.apply(C, B);[/align]
[align=left] }[/align]
[align=left] if (C && D && typeof D == "object") {[/align]
[align=left] for (var A in D) {[/align]
[align=left] C[A] = D[A];[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] return C;[/align]
[align=left] };[/align]
[align=left]该段代码的作用是实现对象的继承。 参数意义: 如果只传入两个参数,则将C继承D的所有方法属性,如果定义了B则每次都先继承B的方法属性然后再继承D的方法属性,即B是默认继承对象。 [/align]
[align=left]参考代码:[/align]
[align=left] <script type="text/javascript" language="JavaScript">var b = {[/align]
[align=left] b1: "dd",[/align]
[align=left] b2: "ff"[/align]
[align=left] };[/align]
[align=left] var a = Ext.apply(this, b);[/align]
[align=left] for (var i in a) {[/align]
[align=left] if ((i == "b1") || (i == "b2")) [/align]
[align=left] alert(i + ":" + a[i]);[/align]
[align=left] }[/align]
</script>
[align=left]Ext.applyIf:参数传入同上面的C,D顺序,如果D中的属性在C中已经定义,则不覆盖值,否则才新增属性 [/align]
[align=left]参考代码: [/align]
[align=left]<script type="text/javascript" language="JavaScript"> [/align]
[align=left] var b = {[/align]
[align=left] b1: "dd",[/align]
[align=left] b2: "ff"[/align]
[align=left] };[/align]
[align=left] var c = {[/align]
[align=left] b1: "ff",[/align]
[align=left] b3: "b3"[/align]
[align=left] };[/align]
[align=left] var a = Ext.apply(this, b);[/align]
[align=left] a = Ext.applyIf(this, c);[/align]
[align=left] for (var i in a) {[/align]
[align=left] if ((i == "b1") || (i == "b2") || (i == "b3")) [/align]
[align=left] alert(i + ":" + a[i]);[/align]
[align=left] }[/align]
[align=left]</script>[/align]
[align=left]Ext.addBehaviors:[/align]
[align=left]在文档完成是通过选择器给相应的element增加时间监听器。 [/align]
[align=left]示例代码:[/align]
[align=left]// add a listener for click on all anchors in element with id foo [/align]
[align=left]Ext.addBehaviors({ [/align]
[align=left] '#foo a@click': function(e, t)[/align]
[align=left]{ // do something }, //id=foo 的 a标签下的cliak事件 [/align]
[align=left] // add the same listener to multiple selectors (separated by comma BEFORE the @) [/align]
[align=left] '#foo a, #bar span.some-class@mouseover' : function(){[/align]
[align=left]// do something [/align]
[align=left]} }); //多个事件 [/align]
[align=left]Ext.id: [/align]
[align=left]源码中定义如下: [/align]
[align=left]// el为混合类型,即传入id或dom对象,prefix为前缀,若为空则使用ext-gen做id的 [/align]
[align=left]id : function(el, prefix){ [/align]
[align=left] prefix = prefix || "ext-gen"; //默 认前缀[/align]
[align=left]el = Ext.getDom(el); [/align]
[align=left]var id = prefix + (++idSeed); [/align]
[align=left]return el ? (el.id ? el.id : (el.id = id)) : id; [/align]
[align=left]}[/align]
[align=left] Ext.extend:详见本blog关于Extend的文章[/align]
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 //该方法在Ext2不推荐再使用
用于实现对数组的合并,如果是字符串则作为只有一项的数组合并。

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: