Ext继承类

来源:互联网 发布:网络科学导论 pdf下载 编辑:程序博客网 时间:2024/05/16 02:56

  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

原创粉丝点击