zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    【推荐】英国金融时报推荐的数据可视化图表分类图
    华为方舟编译器开源官网正式上线
    PyTorch官方教程中文版
    《一张图看懂华为云BigData Pro鲲鹏大数据解决方案》
    区块链学习笔记:DAY05 如何使用公有云区块链服务
    python一行写不下,变多行
    python 多窗口编辑
    ant的设置properties
    java的输出类
    python的IndentationError: unexpected indent python
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/3581755.html
Copyright © 2011-2022 走看看