Ext繼承類

  1. Ext提供了這樣的一個實用函數 Ext.extend (API 參考) 在EXT框架中實現類繼承的機制。這賦予了你擴展任何JavaScript基類的能力,而無須對類自身進行代碼的修改(這裏通常指的是子類,或是從它繼承的,一個基類)擴展Ext組件這是個較理想的方法。  
  2.   
  3. 要從一個現有的類創建出一個新類,首先要通過一個函數聲明新類的構造器,然後調用新類屬性所共享的擴展方法。這些共享的屬性通常是方法,但是如果要在實例之間共享數據(例如,Java中的靜態類變量),應該也一同聲明。  
  4.   
  5. JavsScript並沒有提供一個自動的調用父類構造器的機制,所以你必須通過屬性superclass在你的構造器中顯式調用父類。第一個參數總是this,以保證構造器工作在調用函數的作用域。  

 

  1. MyNewClass = function(arg1, arg2, etc) {  
  2.    
  3. // 顯式調用父類的構造函數  
  4.   
  5. MyNewClass.superclass.constructor.call(this, arg1, arg2, etc);  
  6.   
  7. };  
  8.    
  9.    
  10. 06.  
  11. Ext.extend(MyNewClass, SomeBaseClass, {  
  12. 07.  
  13. theDocument: Ext.get(document),  
  14. 08.  
  15. myNewFn1: function() {  
  16. 09.  
  17. // etc.  
  18. 10.  
  19. },  
  20. 11.  
  21. myNewFn2: function() {  
  22. 12.  
  23. // etc.  
  24. 13.  
  25. }  
  26. 14.  
  27. });  
  28.   
  29. 下面的一個例子是Ext的實際案例,用於可縮放,拖動元素,X、Y的座標值指定了對象可在垂直、水平方向拖動的距離。// 創建新類的構造函數  
  30. view sourceprint?  
  31. 01.  
  32. Ext.ResizableConstrained = function(el, config){  
  33. 02.  
  34. Ext.ResizableConstrained.superclass.constructor.call(this, el, config);  
  35. 03.  
  36. };  
  37. 04.  
  38.    
  39. 05.  
  40. // 擴展基類  
  41. 06.  
  42. Ext.extend(Ext.ResizableConstrained, Ext.Resizable, {  
  43. 07.  
  44. setXConstraint : function(left, right){  
  45. 08.  
  46. // 得到父類的屬性dd和setXConstraint的引用  
  47. 09.  
  48. this.dd.setXConstraint(left, right);  
  49. 10.  
  50. },  
  51. 11.  
  52.    
  53. 12.  
  54. setYConstraint : function(up, down){  
  55. 13.  
  56. // 得到父類的屬性dd和setYConstraint的引用  
  57. 14.  
  58. this.dd.setYConstraint(up, down);  
  59. 15.  
  60. }  
  61. 16.  
  62. });  
  63. 17.  
  64.    
  65. 18.  
  66. // 創建新類的實例  
  67. 19.  
  68. var myResizable = new Ext.ResizableConstrained('resize-el', {  
  69. 20.  
  70. width: 200,  
  71. 21.  
  72. height: 75,  
  73. 22.  
  74. minWidth:100,  
  75. 23.  
  76. minHeight:50,  
  77. 24.  
  78. maxHeight:150,  
  79. 25.  
  80. draggable:true  
  81. 26.  
  82. });  
  83. 27.  
  84.    
  85. 28.  
  86. //調用新方法  
  87. 29.  
  88. myResizable.setYConstraint(0,300);  
  89. 30.  
  90. myResizable.setXConstraint(0,300);  
  91.   
  92. 按照直白語言,你可以把上面的代碼理解成爲:”Ext.ResizableConstrained 擴展了Ext.Resizable並實現了這些方法"。  

轉載自http://kidiaoer.javaeye.com/blog/798206

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章