Ext.Class 屬性詳解

1 , alias : 至關於別名同樣,能夠起多個,能夠經過xtype和Ext.widget()建立實例: html

Js代碼 
  1. Ext.define('SimplePanel', {
  2. extend: 'Ext.panel.Panel',
  3. alias: ['widget.simplepanel_007','widget.simplepanel_008'],
  4. title: 'Yeah!'
  5. });
  6. //經過Ext.widget()建立實例
  7. Ext.widget('simplepanel_007',{
  8. width : 100,
  9. height : 100
  10. }).render(Ext.getBody());
  11. //經過xtype建立
  12. Ext.widget('simplepanel_007', {
  13. width : 100,
  14. items: [
  15. {xtype: 'simplepanel_008', html: 'Foo'},
  16. {xtype: 'simplepanel_008', html: 'Bar'}
  17. ]
  18. }).render(Ext.getBody());

2 , alternateClassName : 跟alias有點相似,至關於給類找替身,能夠多個,能夠經過Ext.create()建立實例: ui

Js代碼 
  1. Ext.define('Boy', {
  2. //定義多個替身
  3. alternateClassName: ['boy2''boy3'],
  4. say : function(msg){
  5. alert(msg);
  6. }
  7. });
  8. var boy1 = Ext.create('Boy');
  9. boy1.say('I am boy1...');
  10. //能夠經過alternateClassName實例化該類
  11. var boy2 = Ext.create('boy2');
  12. boy2.say('I am boy2...');
  13. var boy3 = Ext.create('boy3');
  14. boy3.say('I am boy3...');

3 , config:類的屬性配置,屬性能夠自動生成geter/seter方法 this

Js代碼
  1. Ext.define('Boy', {
  2. config : {
  3. name : 'czp',
  4. age : 25
  5. },
  6. constructor: function(cfg) {
  7. this.initConfig(cfg);
  8. }
  9. });
  10. var czp = Ext.create('Boy',{name:'czpae86'});
  11. //經過getName()方法得到屬性name值
  12. alert(czp.getName());
  13. //經過setAge()方法改變屬性age值
  14. czp.setAge(25.5);

4 , extend : 繼承,能夠繼承單個類 spa

Js代碼 
  1. Ext.define('Person', {
  2. say: function(text) { alert(text); }
  3. });
  4. Ext.define('Boy', {
  5. extend : 'Person'
  6. });
  7. var czp = Ext.create('Boy');
  8. //繼承了Person,因此能夠使用say()方法
  9. czp.say('my name is czp.');

5 , inheritableStatics : 定義靜態方法,能夠經過"類名.方法名"調用靜態方法. 相似 statics屬性, .net

區別是:子類也能夠使用該靜態方法,但statics屬性定義的靜態方法子類是不會繼承的. htm

Js代碼 
  1. Ext.define('Person', {
  2. inheritableStatics : {
  3. sleep : function(){
  4. alert('sleep');
  5. }
  6. },
  7. say: function(text) { alert(text); }
  8. });
  9. Ext.define('Boy', {
  10. extend : 'Person'
  11. });
  12. //子類能夠經過"類名.方法名"調用父類經過"inheritableStatics"定義的方法
  13. Boy.sleep();

6 , mixins : 能夠實現多繼承 blog

Js代碼
  1. Ext.define('Person', {
  2. say: function(text) { alert(text); }
  3. });
  4. Ext.define('Boy', {
  5. play : function(){
  6. alert('play');
  7. }
  8. });
  9. Ext.define('Gird', {
  10. sleep : function(){
  11. alert('sleep');
  12. }
  13. });
  14. Ext.define('A_007', {
  15. //繼承Person
  16. extend : 'Person',
  17. //同時繼承'Boy','Gird'
  18. mixins : ['Boy','Gird']
  19. });
  20. var a_007 = new A_007();
  21. a_007.say('我能夠say,也能夠play,還能夠sleep!!');
  22. a_007.play();
  23. a_007.sleep();

7 , singleton : 建立單例模式的類, 若是singleton爲true,那麼該類不能用經過new建立,也不能被繼承 繼承

Js代碼 
  1. Ext.define('Logger', {
  2. //singleton爲true
  3. singleton: true,
  4. log: function(msg) {
  5. alert(msg);
  6. }
  7. });
  8. //方法調用"類名.方法名"
  9. Logger.log('Hello');

8 , statics : 與第5個inheritableStatics屬性相似,statics屬性定義的靜態方法子類是不會繼承的.請看第5個屬性. get

9 , uses 和 requires : 與requires屬性相似,都是對某些類進行引用 it

uses -- 被引用的類能夠在該類以後才加載.

requires -- 被引用的類必須在該類以前加載.

Js代碼  複製代碼  收藏代碼
  1. Ext.define('Gird', {
  2. uses : ['Boy'],
  3. getBoy : function(){
  4. return Ext.create('Boy');
  5. },
  6. sleep : function(){
  7. alert('sleep');
  8. }
  9. });
  10. //對於uses屬性,Boy類放在後面是能夠的,不會報錯
  11. Ext.define('Boy', {
  12. play : function(){
  13. alert('play');
  14. }
  15. });
  16. //對於requires屬性,Boy類必須在Grid類以前加載,否則會報錯
  17. Ext.define('Boy', {
  18. play : function(){
  19. alert('play');
  20. }
  21. });
  22. Ext.define('Gird', {
  23. requires : ['Boy'],
  24. getBoy : function(){
  25. return Ext.create('Boy');
  26. },
  27. sleep : function(){
  28. alert('sleep');
  29. }
  30. });
相關文章
相關標籤/搜索