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