Ext是Extjs的命名空间,为Extjs框架提供唯一的全局变量
这样做可以避免冲突,便于代码维护
1,apply和applyif方法
apply=function(object, config, defaults)
:Copies all the properties of config to the specified object.
applyif=function(object, config)
:Copies all the properties of config to object if they don't already exist
(extend方法已经被丢弃,不做介绍)
2,typeof方法
Ext.typeof(v):v为要检查的变量
typeof的取值:
undefined,null,string,number,boolean,date,function,
object,array,regexp,element,textnode,whitspace
3,isEmpty:检测值是否为空
Ext.isEmpty(v,allowEmptyString):检测了4中为空的情况:null,undefined,空字符串和长度为0的array
v是要检查的值;
allowEmptyString默认是false,标示不能空字符串,反过来,空字符串也返回true
当返回true是标示值为空,false标示值不为空
4,isObject:检测是否是javascript的对象
Ext.isObject(v)
v是要检测的值,如果是javascript对象返回true,否则返回false
源码中的toString.call(value),extjs的扩展类的返回值是[object function],javascript返回值是[object object]
5,isIterable:检测是否可迭代的
Ext.IsIterable(v)
v是要检测的值,如果值的类型是迭代的,返回true,否则返回false
6,isFunction:检测值是否为函数
Ext.isFunction(v)
v是要检测的值,如果值的类型是函数,返回true,否则返回false
7,其他的检测方法
isArray 检测是否是数组
isDate 检测是否是日期
isPrimitive 检测是否是javascript数据类型
isNumber与IsNumberic
区别:isNumber检测的是数据类型,而IsNumberic 检测的是数值
如果值的数据类型是数字,并且不是无穷大,无穷小,isNumber返回true,否则为false
如果值是非数字,无穷大或无穷小,isNumberic返回false,否则返回true
其他基础方法
1,iterate
对数组或对象进行迭代
Ext.iterate(object,fn,scope)
object为要进行迭代操作的数组或对象、
fn是要迭代执行的函数
scope是作用域
2,Clone
可以克隆数组,对象,dom节点和日期数据,以避免bao保持旧的指向
Ext.clone(item)
item:要复制的数组,对象,Dom节点,或者日期
返回值:克隆后的数组,对象,Dom节点,或者日期
3,id
产生ID值
Ext.id(el,prefix)
el:可选参数,要增加的id元素,值可为元素Id值,HtmlElement对象或者Element对象;
prefix也是可选参数,是自定义的id前缀字符串,
如果el已经有id,直接返回id的值,如果没有返回生成的id值
4,getBody
返回当前document对象的body元素
Ext.getBody()
要注意返回值是一个Element对象
5,getHead
返回document的Head元素
Ext.getHead()
要注意返回值是一个Element对象
6,getDoc
返回document对象
Ext.getDoc()
要注意返回值是一个Element对象
7Destroy
删除对象及其事件,从dom中删除节点,如果存在destroy方法,执行它
Ext.destroy(obj1,obj2,obj4.....objn)
objn大于等于1,该方法没有返回值
8.urlAppend
为url追加查询字符串
Ext.urlAppend(url,s)
其中url是要增加查询字符串的地址,s是要增加的查询字符串,方法最后返回增加了查询字符串后的url、
直接调用的是Ext.String.urlAppend方法生成字符串
9.addBehaviors
若document对象已经准备好,则可为匹配选择符的元素绑定事件
Ext.addBehaviors(0)
o为对象,其格式如下
{
'S@eventName':fn
}
s是选择符;eventname是事件名称,如click,dbclick,fn是要绑定的函数
没有返回值
10.getScrollBarWidth
获取滚动条宽度
Ext.getScrollBarWidth([force])
force作用是强制重新计算滚动条宽度
返回滚动条宽度
11,destroyMembers
删除对象成员
Ext.destroyMembers(0,name1,name2,name3....namen)
o是要删除其成员的对象,namen中n大于等于1,是要删除的成员的关键字
没有返回值
12,copyTo
从一个对象复制属性名到另一个对象。
Ext.copyTo(dest,source,names[,useprototypekeys])
其中,dest是要复制的目标对象
source是要复制的源对象
name是要复制的关键字,可为数组和字符串
usePrototypekeys是布尔值的可选参数,当设置true时,无论源对象是否存在关键字都进行复制,其默认值为false,也就是说只有源对象存在关键字时才进行复制;
改方法返回复制后的目标对象
13其他方法
Ext.urlEncode:对url进行编码,extjs 4中不推荐使用,建议用Ext.Object对象的toQueryString方法代替
Ext.urlDecode:对url进行解码,extjs 4中不推荐使用建议使用Ext.Object对象的fromQueryString 方法代替
平台检测工具
Ext.is 检测当前应用运行的环境。这个很重要
主要有一下13个属性
Android,Blackberry,Desktop,Linux,Mac,Phone,Standalone,Tablet,windows,ios,ipad,iphone,ipod
Ext.is是一个对象,init方法为其初始化方法
Ext.is在platforms属性中使用数组形式包含了检测各种平台的正则表达式,检测用的属性名称和标记符号,这样做非常有利于扩展
当前运行环境检测工具
Ext.supports 在框架中如果使用html5和css3的功能,就必须先检测浏览器是否支持,不支持的话就得用其他方法实现,这样既可充分发挥浏览器的性能,也能向下兼容。最大的问题再于,是在每次使用新功能的时候都检测一遍,还是先检测好,并保存到一个变量或者对象属性中,然后根据该变量或者对象属性进行检测呢?肯定是最后一种方式好,因为这样避免多次运行不必要的检测过程,提高运行效率
Extjs的静态方法
Extjs提供了Ext.Date,Ext.Number,Ext.String,Ext.Error,Ext.Object,Ext.Function和Ext.Array 7个对象
Ext.Object中的静态方法
toQueryObjects
将对象转换为数组
Ext.Object.toQueryObjects(name,object[,recursive])
name是字符串,数组中子对象的关键字
object是要转换的对象,数组,字符串或者其他数据,recursive是可选参数,决定是否执行地柜,默认false,不执行递归,否则为ture,执行递归,
此方法返回转换后的数组
2,toQueryString
将对象转换为编码的查询字符串
Ext.Object.toQueryString(object[,recusive]);
Object是要转换的对象
recursive是可选参数,决定是否使用递归,默认是false,不使用递归
3,fromQueryString
将查询字符串编码转换对象
Ext.Object.fromQuryString(string[,recursive])
string是要转换的字符串
recursive是可选参数,决定是否递归,默认false
此方法返回转换后的对象
4,Each
枚举对象的回调函数
Ext.Object.each(object,fn[,scope]);
object是要枚举的对象
fn是枚举操作要执行的回调函数,每一次枚举会依次提供关键字,值和对象本身这3个参数,
回调函数中返回false可终止回调函数
scope是可选参数,为函数运行的作用域
没有返回值
5.Merge
以递归方式合并任何数量的对象,而且取消对他们的指定
Ext.Object.merge(source[,obj1,obj2,obj3....obj4])
source是要合并的源对象 objn中n大于等于1是要合并的对象
返回合并后的对象
6,Ext.Object中其他方法
chain,根据指定的对象创建一个新对象作为原型链
getValues:获取对象内所有的值,以数组形式返回
getKey:在兑现内根据指定的值返回其关键字
getKeys:获取对象所有关键字,以数组的形式返回
getSize:返回对象的关键字的数量
Ext.Function中的静态方法
1,flexSetter
封装一个只接受两个参数的函数,封装后,函数的参数会变得灵活
Ext.Function.flexSetter(fn)
fn是要封装的函数,该方法返回封装后的函数
2,Bind
绑定函数的方法,主要作用是保持作用域
Ext.Function.bind(fn[,scope,args,appargs])
fn是要绑定的函数,
scope是可选参数,是函数运行的作用域,如果没有指定默认是windows对象
args是可选参数,是调用时重写参数的参数数组,而不是重写原有参数
该方法返回绑定后的函数
3,pass
封装一个新函数,在调用旧函数时,将预设的参数插入到新函数的参数前面做为旧函数的参数
Ext.Function.pass(fn,args[,scope])
fn是要封装的函数
args是数组,为预设的参数,
scope是可选参数,为函数的作用于
返回封装好的函数
4,alias
为方法创建一个别名
Ext.Function.alias(object,methodName)
object是要创建别名的对象;
methodname是字符串,为创建别名的方法名称;
改方法返回要创建别名的函数
5,createInterceptor
创建一个拦截函数,其作用是在调用原始函数时,先使用拦截函数检测数据
如果拦截函数返回false,不调用原始函数,直接返回参数return value或null。否则,执行原始函数
该功能主要用于验证输入,验证通过后才修改原始值
Ext.Function.createInterceptor(origFn,newFn[,scope,returnValue])
origFn是原始函数
newFn是拦截函数;
scope是可选参数,函数的作用域
return value是可选参数,是拦截函数返回false时的返回值,可以是任意数据类型,如果没有设置,则返回null,该方法返回新建的函数
如果拦截函数不是函数,直接返回原始函数
在返回函数的内部,如果拦截返回的不是false,则执行原始函数,否则返回returnvalue,或者null
6,createDelayed
创建一个延时执行的回调函数
Ext.Function.createDelayed(fn,delay[,scope,args,appends])
fn是回调函数
delay是延迟的时间,单位是微妙
scope是作用域,没有指定则为windows对象
args为调用时重写参数的参数数组。
appedargs是布尔型或者数字,true则将args追加到原有参数,而不是重写原有参数,如果是数字,则在原有参数由该指定的位置插入args参数
返回新建的函数
7Defer
在指定时间后执行函数
Ext.Function.defer(fn,delay[,scope,args,appends])
fn是回调函数
delay是延迟的时间其单位是微妙
scope函数作用域
args调用时重写参数的参数数组
appedargs是布尔型或者数字,true则将args追加到原有参数,而不是重写原有参数,如果是数字,则在原有参数由该指定的位置插入args参数
8,createSequence
创建一个函数,在执行原始函数之后,执行指定的函数
Ext.Function.createSequnce(orignFn,newFn[,scope])
orignFn要执行的原始函数
newFn是在原始函数执行后在执行的函数
scope是可选参数,为函数的作用域
9,createBuffered
创建一个缓冲函数,在指定的时间内,如果函数再次被触发则重新开始计时。只有在缓存期内没有再被触发时,才会执行指定的函数,该方法主要用于定义键盘事件,例如在缓冲期内,用户再没有输入任何字符,则可以做一些处理,如果数据库搜索数据,在下拉列表中显示
Ext.Function.createBuffered(fn,buffer,scope,args)
fn是缓冲事件过后要执行的函数
buffer是缓冲事件,其单位是微秒
scope函数作用域,没有指定时为window对象
args是可选参数是调用时重写参数的参数数组;改方法返回新建的函数
返回新建的函数
10createThrottled
封装那些会被多次且迅速调用的函数,如鼠标移动事件,只有在局里上次调用时间达到指定间隔后才执行操作
Ext.Function.createThrottled(fn,interval[,scope])
fn是缓冲时间过后要执行的函数
interval是指定的时间间隔,单位是微秒
scope作用域,没有指定时默认为window
返回新建的函数
11Clone
为指定的函数创建一个克隆函数
Ext.Function.clone(fn)
fn是要克隆的函数
代码只是返回一个匿名的函数,而匿名函数内会执行指定的函数
12interceptBefore
在函数的原始操作之前执行一个指定的操作,
Ext.Function.interceptBefore(Object,methodName,fn[,scope])
object为目标对象
methodName为要重写的方法
fn是新的操作
scope是可选参数
返回新建的函数
13.interceptAfter
在函数的原始操作之后执行一个指定的操作
Ext.Function.InterceptAfter(object,methodName,fn[,scope])
object为目标对象,methodname为要重写的方法,fn为新的操作
scope函数作用域
返回新建的函数
Ext.Array中的静态方法
each
Ext.Array.each(array,fn[,scope,reverse])
arry为要枚举的数组,fn是枚举每一项时要执行的函数,函数可接受item,index,items
scope是作用域范围
reverse,如果为true则从最后一个枚举值开始枚举
如果循环执行完毕,没有中断,则返回true
2,foreach
遍历一个数组,并使用指定函数处理数组的每一个元素
Ext.Array.forEach(array,fn[,scope])
array是要遍历的数组
fn是处理函数,函数一次可接受item,index,items,item是枚举数组元素,index为数组索引,items是数组本身
scope是作用域
该函数没有返回值
3.toArray
将可迭代的数据转换为数组
Ext.Array.toArray(iterable[,start,end])
iterable的数据类型是任何可迭代的数据,标示将要转换的数组的数据
start为数字值,标示转换的开始位置
end为数字值,标示转换的结束位置;
该方法返回转换后的数组
4,pluck
根据指定的属性,获取数组内每一个对象指定关键字的值
Ext.Array.pluck(array,name)
array是获取数据的数组
name是字符串,为指定的关键字
该方法返回由指定关键字的值组成的数组
5,from
将一个值转换为数组
Ext.Array.from(value[,newReference])
value是要转换为数组的值;
newReference是可选参数决定使用数组的元素是否使用新的指向,默认为false,不使用新指向,否则克隆数组,使用新指向
6,sort
对数组中的元素进行排序,如果要对包含中文字符的数组进行排序,一定要定义自定义排序函数,否则会出错
Ext.Array.sort(array[,fn])
其中array是要排序的数组
fn自定义排序函数
var ar=["张三","李四","王五","刘六"]
Ext.Array.sort(ar,function(a,b){
if(typeof a==="string")
return a.localeCompare(b);
else
return a<b
})
这里对字符串使用了localeCompare方法进行比较大小,而不是直接比较大小
7,Ext.Array中其他的方法
indexOf:查询元素在数组中的位置,如果找不到元素,返回-1
contains:检测数组是否包含指定元素
map:与forEach方法有点类似,不通的是map方法会吧处理结果以数组的形式返回
every:与each方法类似,使用回调函数处理数组的每一个元素,如果回调函数返回false,中断执行并返回false,否则返回true
some:与every方法正好相反,回调函数返回true,中断执行并返回true,否则返回false
clean:清理数组中的空值
unique:清理数组中的重复项
filter:使用过滤函数验证函数中的每一个元素,如果函数返回true该元素保留否则已出元素,最后返回过滤后的数组
remove:从数组中删除一个元素
include:如果数组不包含指定元素,将该元素加入到数组
clone:克隆数组,会使用新的指向
merge:合并数组,并去除重复项
intersect:将存在于所有数组的项组合成一个新数组
difference:将数组B中不存在于数组A的项一次插入到数组A中
flatten:使用递归方式将多维数组转换为一维数组
min:返回数组元素中的最小值,和sort类似,如果包含中文必须制定排序函数
max:返回数组中的最大值
mean:计算数组中所有项的平均值。
Sum:计算数组中所有项的和。、
Ext.Error中的静态方法
ignore:布尔值,默认为false,显示错误报告,如果true,不显示错误报表,
notify:作用和ignore相同,区别在于它不会影响异常的抛出
Ext.Error主要的静态方法是raise,用于抛出错误信息,方法handle的作用是实现自定义错误处理
Extjs4中使用Ext.define创建类,定义在ClassManager.js中
Ext.define(className,data,createfn)
创建类的类Ext.Class
Ext.class(class,data,oncreated)
class要创建的类
data配置对象
oncreated:类创建完成的回调函数
所有继承类的积累:Ext.Base
实现动态加载的:Ext.loader
管理类的类:Ext.ClassManager