ExtJS教程(3)--- Ext中類的使用

來源:互聯網
上載者:User

標籤:extjs   javascript   

本章僅僅介紹Ext中類的基礎知識,一些進階知識會在以後的章節中穿插介紹

註:由於上傳較為麻煩,且圖片佔用篇幅較大,所以在以後的文章中如果不是特別必要,將不會插入很多圖片,最終的執行結果請大家自行驗證。

1、定義一個類

//使用Ext定義一個類Ext.define('Person',{name:'jaune',age:18});//建立一個類var person = new Person();console.log(person);

從打出來的結果中可以看出我們定義的屬性已經出現在了類中。這是Ext中最簡單的類的定義方式

注意中的superclass,我們用Ext定義的類如果沒有指明繼承自哪個類,預設都是繼承自Ext.Base,這個類就相當於Java中的Object類,是Ext所有類的基類。如何繼承其他類會在下面講到。

2、Ext中建構函式

Ext.define('Person',{name:'jaune',age:18,constructor:function(config){Ext.apply(this,config);}});//建立一個類var person = new Person({name:'petty'});console.log(person);
這裡的apply與第二章中的apply類似,Ext同樣有applyIf函數,用法與第二章中的applyIf類似,第二章中的apply和applyIf函數就是仿照的Ext中的這兩個函數寫的.。如果大家有興趣查看源碼的話可以再Ext的協助中找到Ext.apply方法然後點擊後面的“view source”查看其源碼。

3、類的繼承
//使用Ext定義一個類Ext.define('Person',{name:'jaune',age:18,constructor:function(config){Ext.apply(this,config);}});//類的繼承Ext.define('Man',{extend:'Person',sex:'Male',constructor:function(config){//這裡是為了確保建立的對象中的sex屬性是Male,如果config中有sex屬性就刪除這個屬性if(config.hasOwnProperty('sex')){delete config.sex;}/* * callParent的意思就是調用父類同名的方法,這裡用作繼承父類構造方法 * 比如父類中有一個toString方法,在子類的toString方法中調用this.callParent()方法,則會執行父類中的toString方法 * 這個大家可以親自驗證 */this.callParent([config]);},//這個方法是為了方便列印toString:function(){return {name:this.name,age:this.age,sex:this.sex};}});var man = new Man({name:'tom',sex:'Female'});console.log(man.toString());/* * 列印結果如下 * Object {name: "tom", age: 18, sex: "Male"}  */
man對象建立的過程是,new對象時將config傳入Man類的建構函式中,然後Man的建構函式將sex屬性過濾掉,然後調用父類的構造方法將config中的屬性賦予man對象

4、類的靜態屬性和靜態方法

/** * statics 可以包含類的靜態和靜態方法,但是不能被子類繼承 * inheritableStatics 與statics類似但是可以被子類繼承 */Ext.define('DateUtil',{inheritableStatics:{currentDate:Ext.Date.format(new Date(),'Y-m-d'),getCurrentDate:function(formatStr){if(Ext.isString(formatStr)){Ext.Date.format(new Date(),formatStr);}else{return this.currentDate;}}}});console.log(DateUtil.currentDate);Ext.define('TimeUtil',{extend:'DateUtil',statics:{currentTime:Ext.Date.format(new Date(),'Y-m-d H:i:s')}});console.log(TimeUtil.currentDate);
上面的兩個類,如果DateUtil中用的是statics屬性來定義靜態屬性和方法則TimeUtil無法繼承

5、單例在Ext中定義單例模式的類非常簡單,在定義類的時候加上singleton:true 就表示要定義的類為單例,剩下的事情Ext會替你解決,只需要像定義普通類一樣編碼就可以了。

Ext.define('DateUtil',{singleton:true,currentDate:Ext.Date.format(new Date(),'Y-m-d'),getCurrentDate:function(formatStr){if(Ext.isString(formatStr)){Ext.Date.format(new Date(),formatStr);}else{return this.currentDate;}}});console.log(DateUtil);
JS中的單例其實就是將類執行個體化,可能沒有大家想的那麼複雜

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.