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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM