Extjs学习笔记--(四,基本函数介绍)

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

 

 

posted @ 2014-03-05 09:34  尼姑哪里跑  阅读(7238)  评论(0编辑  收藏  举报